1
我有一個CoreData實體類X,其中存儲的NSString ID的一個NSArray,可變形的屬性中(可以說someIDs)...核心ID的數據可變形的NSArray
給出一個NSString ID,我怎麼能在他們的someIDs屬性中查找(使用Predicate)包含ID的所有實體X?
注:我知道關係(所以不需要建議使用關係)等,但在這種情況下該怎麼辦?
我有一個CoreData實體類X,其中存儲的NSString ID的一個NSArray,可變形的屬性中(可以說someIDs)...核心ID的數據可變形的NSArray
給出一個NSString ID,我怎麼能在他們的someIDs屬性中查找(使用Predicate)包含ID的所有實體X?
注:我知道關係(所以不需要建議使用關係)等,但在這種情況下該怎麼辦?
你不能。可轉換屬性作爲數據blob存儲在SQLite存儲文件中(使用NSCoding
方法)。核心數據獲取請求(轉換爲SQLite查詢) 無法訪問可轉換屬性的內容。
如果你不想使用一對多的關係,那麼你只能取所有對象和過濾取NSArray
。
我相信它以某種方式可能,請參閱http://stackoverflow.com/questions/15204498/nspredicate-comparing-transformed-clplacemark-with-another-clplacemark –
@PeterLapisu:它似乎與==或!=,例如'[NSPredicate predicateWithFormat:@「someIDs ==%@」,@ [@「12」,@「34」]]'。在這種情況下,右側將被轉換爲SQLite查詢中使用的數據blob。您可以看到,如果將啓動參數「-com.apple.CoreData.SQLDebug 3」添加到您的方案設置中。它不適用於'「任何someIDS ==%@」'。 –
是的,所以只是直接相等被測試......但仍然相信有一種方法可以讓CD以這種方式處理這個blob並執行操作(使用predicateWithLeftExpression) –