NSManagedObjectContext CoreData设备/模拟器的差异

时间:2010-10-19 06:27:32

标签: objective-c nsmanagedobjectcontext

我对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总是为零以前加入了商店。

我可能会出错的任何想法?

也许我对我想要实现的目标的总体方法是错误的......

1 个答案:

答案 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>

}

上下文变为有效确定性的时间是什么?