我有一個核心數據項目,有書籍和作者。在數據模型中,作者與書籍和書籍有多對多的關係,與作者有一對一的關係。我試圖拉出沒有作者的所有書籍。無論我如何嘗試,都不會返回任何結果。在我的謂詞中,我也嘗試了= NIL,== nil,== NIL。任何建議,將不勝感激。iPhone SDK核心數據:獲取所有實體與零關係?
// fetch all books without authors
- (NSMutableArray *)fetchOrphanedBooks {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Book" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:20];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"author == nil"];
[fetchRequest setPredicate:predicate];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSString *sectionKey = @"name";//nil;
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext
sectionNameKeyPath:sectionKey cacheName:nil];
BOOL success = [aFetchedResultsController performFetch:nil];
NSMutableArray *orphans = nil;
// this is always 0
NSLog(@"Orphans found: %i", aFetchedResultsController.fetchedObjects.count);
if (aFetchedResultsController.fetchedObjects.count > 0)
{
orphans = [[NSMutableArray alloc] init];
for (Book *book in aFetchedResultsController.fetchedObjects)
{
if (book.author == nil)
{
[orphans addObject:book];
}
}
}
[aFetchedResultsController release];
[fetchRequest release];
[sortDescriptor release];
[sortDescriptors release];
return [orphans autorelease];
}
我編輯的代碼,把謂語在其適當的形式,以便沒有人會做,我做了同樣的錯誤。 – TechZen 2010-04-30 19:31:57
是否需要書 - >作者關係? – TechZen 2010-04-30 19:33:06