0

嘿,如何获得大量信息,如 1000 行而不会卡住?我试试这个:

dispatch_async(dispatch_get_main_queue(), {
//here code
})

但是当我执行请求self.context.executeFetchRequest时它返回我fatal error: unexpectedly found nil while unwrapping an Optional value。我有一个错误,我必须self.在函数前面添加。

    let queue:dispatch_queue_t = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
 dispatch_async(queue, { () -> Void in
                 //code
        })

但我也得到同样的错误......

我使用 NSFetchRequest 并将结果添加到 NSArray 中,然后将结果循环到 for 循环中,并在循环中将结果排序到字典中。

4

1 回答 1

0

1000 条记录对于 Core Data 来说并不是很多。只需在线程上获取它们。

我不建议“在字典中排序结果”。您应该考虑您的应用程序逻辑如何与数据交互,并简单地从 Core Data 持久存储中获取您需要的对象。

例如,如果您想在表格视图中显示 1000 行,请使用针对这种情况进行了优化的“NSFetchedResultsController” - 这样您无需任何工作即可避免内存和性能问题。

如果您真的需要使用 Core Data 进行线程化(我对此表示怀疑),我建议不要从 GCD 开始,而是使用 Core Data 自己的并发 API,例如performBlock全局队列子上下文。但很可能你不必担心这些。

最后,您的错误实际上是指您尚未发布的一些代码。它与 Swift 的可选项有关。例如,如果您将变量声明为类型variable : String?(或者您使用返回此类类型的 API),variable!则可以在确定它不是nil. 如果是,nil您将遇到上述崩溃。

于 2014-12-06T02:08:15.147 回答