好的,我在覈心數據中有一對多的關係。一頓飯可以由許多不同的食物組成。我的代碼在Fetch Controller中似乎不太適用。我可以自信地說,self.meal是目前正在嘗試取用的餐食。我在整個應用程序中共享上下文。核心數據一對多取數據
我遇到的問題是應用程序顯示的食物,但它似乎不匹配什麼應該是內部的一餐。只要我添加了一種食物,它立即顯示出來,即使它不在膳食內。
任何幫助或建議,我這樣做正確提取。
- (NSFetchedResultsController *)fetchedResultsController
{
self.context = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Food" inManagedObjectContext:self.context];
[fetchRequest setEntity:entity];
NSPredicate *foodPredicate = [NSPredicate predicateWithFormat:@"meals == %@", self.meal];
[fetchRequest setPredicate:foodPredicate];
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.context sectionNameKeyPath:nil cacheName:@"Root"];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;
[fetchRequest release];
[theFetchedResultsController release];
return _fetchedResultsController;
}
我看了看你的NSFetchedResultsController代碼,找不到任何問題。無論「self.meal」包含什麼,錯誤行爲是否發生?當你看到虛假的數據時,「self.meal」不存在,對吧?或者,您是否可以在之前的代碼實驗遺留下來的持久存儲中存在虛假數據?如果是這樣,手動刪除存儲文件可以幫助。 – FluffulousChimp 2012-03-16 03:01:19
我必須遍歷每行代碼,但我確實相信self.meal永遠不會變爲零 – Vikings 2012-03-16 03:08:34
您可以粘貼更多的代碼嗎?這裏似乎沒有任何問題。 – 2012-03-16 04:17:12