2012-04-25 141 views
9

我希望找到一種方法來檢查CoreData屬性是否爲空。該屬性本身是二進制數據類型。如果該屬性爲空,那麼我可以告訴我的課程下載並將一些數據保存到此屬性中。檢查CoreData屬性是否爲空

根據CoreData文檔,您不應該繼續查看是否存在對象。我想知道是否有辦法做到這一點?沒有違反這個'法律'?

這是我第一次嘗試使用CoreData。之後,我將它添加到我的代碼中,這稍微更加痛苦,但是到目前爲止,一切似乎都沒有問題。我只需要找出檢查屬性是否有值的邏輯方法。如果沒有,那麼我需要下載並保存新數據,如果是的話,我只是使用屬性中的內容。

更新:

我剛剛發現在CoreData框架,我一直在讀,雖然試圖趕上這個休息此方法。不知道這是否會有所幫助..你們怎麼看?

willAccessValueForKey:提供關鍵值觀察訪問 通知的支持。

  • (void)willAccessValueForKey:(NSString *)key參數key一個接收者屬性的名稱。討論請參閱 didAccessValueForKey:瞭解更多詳情。您可以使用鍵值爲nil的 調用此方法,以確保發生故障,如以下示例所示的 。

[aManagedObject willAccessValueForKey:nil];

不太確定..我不明白的東西是提供了對鍵值觀察訪問通知的支持。 ???

回答

11

該通知用於將要訪問該值的時間。

如果我正確理解你,你不想看到一個實體是否存在,而是實體中的一個屬性。所以,我假設你已經標記爲可選屬性。

比方說,你有一個名爲rawData的二進制數據屬性。如果要查找數據庫中沒有爲此屬性設置任何數據的所有@「MyEntity」對象,則cn發出此提取請求。

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"MyEntity"]; 
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"rawData = nil"]; 
NSArray *results = [managedObjectContext executeFetchRequest:fetchRequest error:0]; 
+0

好涼爽..謝謝你。它只是一個擔心,因爲我已經讀過發出許多獲取請求是一個頑皮的事情.. .. P – 2012-04-26 03:04:03

+3

您可以始終阻止某人創建一個具有空屬性的對象,通過使其不可選。或者,您可以構建監視數據庫更改的對象,並在具有空間nil/non-nil屬性值時將對象添加/刪除到全局列表。 – 2012-04-26 03:08:42