2014-02-11 49 views
1

我有一個CoreData實體類X,其中存儲的NSString ID的一個NSArray,可變形的屬性中(可以說someIDs)...核心ID的數據可變形的NSArray

給出一個NSString ID,我怎麼能在他們的someIDs屬性中查找(使用Predicate)包含ID的所有實體X?

注:我知道關係(所以不需要建議使用關係)等,但在這種情況下該怎麼辦?

回答

2

你不能。可轉換屬性作爲數據blob存儲在SQLite存儲文件中(使用NSCoding方法)。核心數據獲取請求(轉換爲SQLite查詢) 無法訪問可轉換屬性的內容。

如果你不想使用一對多的關係,那麼你只能取所有對象和過濾取NSArray

+0

我相信它以某種方式可能,請參閱http://stackoverflow.com/questions/15204498/nspredicate-comparing-transformed-clplacemark-with-another-clplacemark –

+2

@PeterLapisu:它似乎與==或!=,例如'[NSPredicate predicateWithFormat:@「someIDs ==%@」,@ [@「12」,@「34」]]'。在這種情況下,右側將被轉換爲SQLite查詢中使用的數據blob。您可以看到,如果將啓動參數「-com.apple.CoreData.SQLDebug 3」添加到您的方案設置中。它不適用於'「任何someIDS ==%@」'。 –

+0

是的,所以只是直接相等被測試......但仍然相信有一種方法可以讓CD以這種方式處理這個blob並執行操作(使用predicateWithLeftExpression) –

相關問題