2014-12-05 34 views
0

嘿如何獲得大量的信息,如1000行沒有卡住? 我嘗試用這樣的:Swift - 從核心數據加載信息更快

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循環,並在循環排序我在字典的結果。

回答

0

1000條記錄對於Core Data來說並不是很多。只需在線上獲取它們。

我不會建議「排序字典結果」。您應該考慮應用程序邏輯如何與數據交互,並只需從Core Data持久性存儲中獲取所需的對象。

例如,如果您希望在表格視圖中顯示1000行,請使用針對此類情況優化的「NSFetchedResultsController」 - 這樣可以避免內存和性能問題而無需任何工作。

如果你確實需要使用核心數據線程(我懷疑),我會建議不要從GCD開始,而是使用核心數據自己的併發API,如performBlock和全局隊列子上下文。但很可能你不必擔心這些。

最後,您的錯誤實際上是指您尚未發佈的某些代碼。它與Swift的選擇權有關。例如,如果您聲明變量類型爲variable : String?(或者您使用返回此類型的API),則可以使用variable!解包它,如果您確定它不是nil。如果是nil,您將會收到上述崩潰。

+0

我從核心數據獲取數據作爲NSData和unarchive與NSKeyedUnarchived存檔包含Dictionary 和此字典加載我的tableview,tableview是在PageViewController加載不同的字典,當我在頁面之間滑動我有1.5- 2秒鐘卡住了,我收到了來自Core Data的數百個字典,並將它們添加到1個字典中,並將其發送到pageviewcontroller以顯示所有數據。 – 2014-12-06 02:41:20

+0

是的,聽起來像是NSFetchedResultsController。取出已存檔的字典並將原始值存儲在Core Data中。 – Mundi 2014-12-06 02:46:59

+0

我不能存儲我所有代碼想要存儲的原始值dict [「(value)/ \(valueUnit)」] = 55,我必須保存3件事例如: dict [「apple/pieces」] = 4和我想要數數如果我有多次蘋果/件如果它的5次5x4 = 20件,我有橙色件和奇異果件,我想要得到所有件件 – 2014-12-06 02:51:50