0

在我的 viewWillAppear 中,我执行了多个获取请求。我注意到在第一次获取请求时,即使我知道应该找到项目,也没有找到任何东西。在执行第一个 fetch 请求之前,我尝试让主线程休眠,并确定找到了足够的项目。顺便说一句,我也只在模拟器上运行。

所以我的问题是,Core Data 是否需要一些时间来“初始化”或什么?在设备上测试时我是否需要担心这个问题(我还没有开发人员会员资格,所以我无法在设备上测试它)?有什么方法可以“检查”执行获取请求是否安全?

我还毫无延迟地检查了第一个获取请求的 NSError,它为空。

编辑:

请求了我的 viewWillAppear 代码,所以就在这里。虽然不是很有帮助。

    [NSThread sleepForTimeInterval:0.1];
    for (NSString *category in self.categories) {
        [self updateSection:category];
    }

self.cateogires 只是我的表格视图和 updateSection 的部分:更新这些部分。

编辑2:

我对 NSLog 语句做了一些进一步的调查,这就是我发现的。

我添加了 NSLog 语句来记录在获取请求后找到了多少对象以及文档的当前状态。出于某种原因,即使文档似乎已关闭,我也会得到获取结果。

Category1 has 3 values
Doc is open? NO
Category2 has 6 values
Doc is open? NO
Category3 has 3 values
Doc is open? NO
Category4 has 2 values
Doc is open? NO

我认为我的问题是我没有使用 [myManagedDocument openWithCompletionHandler: ] 的 completionHandler 来等待并执行我的获取请求。但是,如果我在文档关闭时进行查询,为什么会得到 fet 结果呢?

4

1 回答 1

0

我建议您尝试并发类型更改为

NSMainQueueConcurrencyType. 这将使操作按顺序进行。

于 2015-02-21T19:15:43.590 回答