当我在“if (coordinator!= nil){”行上放置一个断点时,从核心数据创建的表视图可以正常工作。
如果我在代码中删除或放置断点之前的任何位置,它不会显示表格视图单元格。
- (NSManagedObjectContext *) sharedManagedObjectContext {
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator: coordinator];
[_managedObjectContext setMergePolicy:NSMergeByPropertyStoreTrumpMergePolicy];
}
return _managedObjectContext;
}
我不知道这是如何发生的,并且几乎没有运气找到与此类似的任何其他情况。
提前谢谢你的帮助!
编辑1:
这是用于从 coredata 获取数据的代码
- (BOOL) setupFetchedResultsController:(NSError **) error {
self.managedObjectContext = [[PhotoBreezePersistentStoreManager shared] sharedManagedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"GeoTrack" inManagedObjectContext:self.managedObjectContext]];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"trackName" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *controller = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
controller.delegate = self;
self.fetchedResultsController = controller;
return [controller performFetch:error];
}
如果我在上述任何代码中放置断点...
之后:“self.managedObjectContext = [[PhotoBreezePersistentStoreManager shared] sharedManagedObjectContext];”
...它仍然可以工作。
我对objective-c/cocoa 很陌生,所以我不确定是否涉及队列或线程。不过我会调查你提到的谢谢!