2017-02-14 20 views
0

我想通過我的CoreData篩選匹配的名稱,如果它存在忽略它,或者將新名稱添加到核心數據。我遇到的問題應該是一個簡單的問題,但我無法弄清楚。NSPredicate和CoreData密鑰編碼合規性問題

here's a link to a shot of my code

在我coredata值是String類型的 「TRACKNAME」,但我不斷收到以下異常:

終止應用程序由於未捕獲的異常 'NSUnknownKeyException',原因:「[valueForUndefinedKey: ]:該類不是關鍵字trackName的關鍵字編碼兼容。

我該如何繼續?提取請求是否適用於字符串不明確嗎?

+0

請勿張貼圖片。郵政編碼!該解決方案非常簡單,但沒有人願意從屏幕截圖重新輸入代碼。 – vadian

+0

感謝您的反饋!我會在下一次發佈代碼(不可避免地)要求更多幫助,哈哈 – AaronBeReal

回答

0

您對NSFetchRequest實例調用value(forKey:),但關鍵是隻爲NSManagedObject情況下,代表你的Track實體定義。

提取請求是表示核心數據查詢的對象。根據您的代碼,我假設您正在嘗試確保trackName媒體資源在所有Track實體中都是唯一的。您需要​​獲取請求並檢查以確保該方法返回的數組爲空。

+0

謝謝@DaveWeston,這真的有幫助。你是對的,我試圖確保我沒有輸入重複的Track實體,如果'trackName'已經存在。因爲我是核心數據的新手(一般來說編碼是誠實的),我不清楚如何訪問我的查詢中檢索到的位 – AaronBeReal

0

請更新您的代碼,這一個和嘗試

if result == nil { 
    //result is null because you entered string is not found the valueForkey is also not found in your result 
    print("new entry") 
}else{ 
    print("added") 
}