0

我对 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 也始终为零商店。

有什么想法我可能会出错吗?

也许我试图实现的总体方法是不正确的......

4

1 回答 1

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>

}

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

于 2010-10-19T12:03:11.830 回答