這一直使我堅持整天。核心數據關係,NSPredicates和NSFetchedResultsController
我有一個奇怪的錯誤,我認爲我已經縮小到NSPredicate。我有兩個實體:List和Person。列表與被叫Person和Person有多對多的關係,並且Person與List被稱爲列表有多對多的關係。
我傳遞給我一個tableview控制器一個List對象。然後我希望該tableview控制器顯示屬於該列表對象的人員。我正在做一個NSFetchedResultsController。
設置NSFRC時,我有以下代碼(爲了清楚起見,省略了內存管理)。有問題的列表是myList
:
// Create the request and set it's entity
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
// Create a predicate to get the persons that belong to this list
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(ANY lists == %@)", myList];
// Assign this predicate to the fetch request
[fetchRequest setPredicate:predicate];
// Define some descriptors
NSSortDescriptor *locationDescriptor = [[NSSortDescriptor alloc] initWithKey:@"location" ascending:YES];
NSSortDescriptor *lastNameDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lastName" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:locationDescriptor, lastNameDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
// Create and initialize the fetch results controller.
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"location" cacheName:nil];
self.fetchedResultsController = aFetchedResultsController;
fetchedResultsController.delegate = self;
我認爲這個問題是這一行(因爲它消失,如果我將其刪除):
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(ANY lists == %@)", myList];
當父視圖通過myList
到正在發生的事情是桌面控制器,模擬器只是掛起。沒有崩潰日誌在控制檯或任何東西。這幾乎就像是在用AGES整理NSFRC。
這是我使用的謂詞的問題嗎?
你應該編輯你原來的帖子來問這個問題。 – indragie 2010-07-05 03:21:25