我有一個具有多個tableviews的應用程序,我想使用Core Data來捕獲所有數據。我有兩個實體 - 冰櫃和物品。在第一個tableview中,我添加了一個冰箱,並且它可以正確保存。我退出了應用程序,重新開放,它就在那裏。我點擊冰箱(打開另一個tableview)並添加一些項目,我可以在我的新的分段tableview中看到它們。我退出我的應用程序,重新啓動它,看到冰箱,點擊它,並沒有任何項目。保存來自多個TableVIews的核心數據
我有我的我的appDelegate managedObjectContext並從那裏使用所有視圖引用它,所以我沒有創建多個實例。下面是我用的物品保存到冰箱的代碼,無論是managedObjectContext和我itemsArray:
Item *item = (Item *)[NSEntityDescription insertNewObjectForEntityForName:@"Item" inManagedObjectContext:[delegate managedObjectContext]];
[item setFreezer:freezerName];
[item setName:name];
[item setQuantity:quantity];
[item setSection:section];
[item setAdded:added];
[item setNotes:notes];
NSError *error = nil;
if (![[delegate managedObjectContext] save:&error]) {
NSLog(@"Freezer info didn't save. Need to handle this.");
}
[items insertObject:item atIndex:0];
這裏是代碼我在ItemViewController使用中viewDidLoad中檢索項:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"freezer == '%@'", freezerName];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Item" inManagedObjectContext:[delegate managedObjectContext]];
NSSortDescriptor *sorts = [[NSSortDescriptor alloc] initWithKey:@"section" ascending:NO];
NSArray *sort = [[NSArray alloc] initWithObjects:sorts, nil];
[request setSortDescriptors:sort];
[request setEntity:entity];
[request setPredicate:predicate];
NSError *error = nil;
NSMutableArray *results = [[[delegate managedObjectContext] executeFetchRequest:request error:&error] mutableCopy];
if(results == nil) {
NSLog(@"Error fetching results... need to handle");
}
[self setItems:results];
NSLog(@"items count:%d", [items count]);
返回的物品數量爲零。
我完全難住,花了幾個小時在網上搜索,嘗試不同的事情,我無法弄清楚。我知道有一些更聰明的編碼器,我希望你們其中一位能看到問題所在。
我欣賞這個建議,但收到相同的結果。 – 2011-06-01 17:42:21