2016-09-20 58 views
2

在Swift 3當我們使用NSFetchRequest時,我們必須指定NSFetchRequestResult。但如何獲得一組屬性值?如果我使用這樣的東西Swift 3. NSFetchRequest propertiesToFetch

let fetchRequest = NSFetchRequest<MyClass>(entityName: "MyClass") 
fetchRequest.propertiesToFetch = ["myAttributeName"] 

當我嘗試執行獲取請求時會觸發異常。 error: -executeRequest: encountered exception = The database appears corrupt. 如果我刪除一行propertiesToFetch我沒有得到任何錯誤,但我得到一個對象數組,而不是屬性。

+0

哦,對不起。問題是我忘了設置'fetchRequest.resultType = .dictionaryResultType' –

回答

0

我忘了爲NSFetchRequest設置resultType

let fetchRequest = NSFetchRequest<MyClass>(entityName: "MyClass") 
fetchRequest.propertiesToFetch = ["myAttributeName"] 
fetchRequest.resultType = .dictionaryResultType 
0

實際上,在大多數情況下使用對象數組而不是屬性數組更好。核心數據將管理爲您往返商店的最佳負載平衡。大概你最擔心的是(內存,性能,數據訪問時間)真的沒有保證。

此外,這應該導致更清潔,更安全和更簡潔的代碼。