例如加载一个实体关系的一组对象:核心数据错误:如何正确
我有两个实体命名Project
和Todo
如果一个项目有很多待办事项(一对多的关系),并且每个待办事项有一个项目(见图)。
在我ViewController.h
我有类似:
...
NSArray *projectArray;
NSArray *todosArray;
@property (nonatomic,retain) NSArray *projectArray;
@property (nonatomic,retain) NSArray *todosArray;
...
在我ViewController.m
我有类似:
...
@synthesize projectArray,todosArray;
...
self.projectArray = [self fetchRequestForAllProjects];
...
的用户界面,在那里他能够选择所有不同的项目之间。只要用户选择一个项目,相关的待办事项对象就必须被设置为加载并呈现。
问题1:如何设定待办事项加载到的最佳方式todosArray
?
我做这样的(也是在ViewController.m
):
...
// after deselecting a project entry I reset the todosArray
self.todosArray = nil;
...
//when the user selects a new project I reset the todosArray like this:
self.todosArray = [selectedProject.todos allObjects];
...
但不知何故,该应用程序中的最后一行代码极少崩溃。我的代码有问题吗?
问题2:对todos Objects使用另一个获取请求会更好吗?
UPDATE:
我使用在ViewController.m
的各种方法todosArray
:
(a)中获得的对象的计数, (b)中存在的表视图内的每个待办事项条目行,和 (c)确定所选择的条目待办事项(扔行选择)
有两件事你需要检查以帮助你调试。首先,'selectedProject'是一个有效的对象,当你调用崩溃的行时?其次,selectedProject的'todos'属性/关系是否返回NSSet或nil?如果返回nil,那么当您询问该集合的所有对象时,该应用程序将会崩溃。 – Carter
我添加了这些行来检索你所问的信息,但是因为它没有设法再次崩溃。正如我所说的那样,这种情况非常罕见且难以预测。当它发生时,我会发布发生的事情.Thx –