我正在使用 CoreData 并定义了一个实体 ContactList,它是我使用 XCode xcdatamodel 工具(或任何你称之为内置的东西:)创建的。我还将实体的类名称设置为“ContactList”。然后我使用rentzsch 的mogenerator ( http://github.com/rentzsch/mogenerator ) 来生成我的自定义类文件,并将简单的方法“toString”添加到我的ContactList 类中。
fetchedResultsController 回调非常标准,如下所示:
- (NSFetchedResultsController *)fetchedResultsController {
if (fetchedResultsController_ != nil) {
return fetchedResultsController_;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"ContactList" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:20];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timeStamp" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
[aFetchedResultsController release];
[fetchRequest release];
[sortDescriptor release];
[sortDescriptors release];
NSError *error = nil;
if (![fetchedResultsController_ performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return fetchedResultsController_;
}
现在,当我启动我的应用程序并尝试在“ContactList”对象上调用该方法时,我又从 NSFetchedResultsController 获得了该方法,我得到了
ContactList *contactList = (ContactList *) [self.fetchedResultsController objectAtIndexPath:indexPath];
[contactList toString];
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSManagedObject toString]: unrecognized selector sent to instance 0x6af7bf0'
如消息所示,不知何故 NSFetchedResultsController 不返回“ContactList”对象,而是返回更通用的 NSManagedObject。
有谁知道为什么以及如何解决这个问题???