1

当我在“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 很陌生,所以我不确定是否涉及队列或线程。不过我会调查你提到的谢谢!

4

1 回答 1

0

没有足够的信息来真正说;您需要发布与表视图的创建/填充相关的详细信息。

然而,这听起来确实像是一个经典的比赛条件。涉及任何线程或队列?

于 2012-05-26T15:52:53.207 回答