我对iPhone开发人员比较陌生,并且一直在尝试构建一个应用程序来理解CoreData的工作原理。
我正在尝试实现一些功能,这些功能将允许我检测是否有任何内容被保存以便存储,如果存在,则为用户提供删除这些对象的选项。
我想知道在设备上检索数据而不是模拟器时是否需要考虑时序问题。
我使用XCode向导创建了一个简单的核心数据应用程序,使用UITableViewController类来呈现一些数据。
我的RootViewController类中有以下代码片段:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSSet* obj = nil;
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
obj = [context registeredObjects];
if (obj.count == 0)
{
// Do stuff to add initial data to store
}
else
{
// Do stuff to delete objects from store if user wants
}
}
如果我在模拟器上运行此代码(之前已添加到我的商店),我会获得obj.count的非零值,但是如果我在设备上运行它,即使我是obj.count总是为零以前加入了商店。
我可能会出错的任何想法?
也许我对我想要实现的目标的总体方法是错误的......
答案 0 :(得分:0)
作为一个跟进,也许我应该问的问题是我是否这样做(再次在我的RootViewController中):
- (NSFetchedResultsController *)fetchedResultsController {
<snippet_begin>
NSFetchedResultsController *aFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
NSSet* obj = nil;
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
obj = [context registeredObjects];
</snippet_end>
}
上下文变为有效确定性的时间是什么?