例如加載一個實體關係的一組對象:核心數據錯誤:如何正確
我有兩個實體命名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 –