2012-01-13 155 views
1

我已經遍尋搜索,找到解決此問題的辦法。我所有的嘗試結果都是0。下面是一般的數據結構:使用NSPredicate搜索核心數據實體的NSArray屬性

Core Data Entity A { 
    stringAttribute string 
    .... 
    transformableAttribute(NSArray of NSString objects) keywords 
} 

其中關鍵字= [NSArray的arrayWithObjects:@ 「串1」,@ 「串2」,@ 「串3」,零]

我試圖運行一個謂詞來搜索NSArray可轉換屬性。

我試着對實體A.以下核心數據存儲是一個SQLite店。在0匹配

NSArray *termArray = [NSArray arrayWithObject:@"string 1"]; 
NSPredicate *predicate = [NSPredicate [email protected]"ANY keywords in %@", termArray]; 

---->結果

NSString *term = @"string 1"; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY keywords like[cd] %@", term]; 

---->結果在0匹配

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(keywords, $x, $x like %@)[email protected] > 0", term] 

---->結果中的錯誤,一個非關係不能是一個子查詢集合

我已經試過上述的一些排列,但依然沒有結果。有什麼建議?核心數據可能嗎?

謝謝!

+0

我認爲,如果你做了字符串數組的獨立實體的生活會更容易和使用的關係將它們連接起來。如果像那樣實施,你所要做的很容易。 – agilityvision 2012-01-13 04:10:13

+0

是的,我認爲一個單獨的實體是最好的,就像在SQL中一樣。我希望避免遷移,但我找不到更好的方法。我正在使用fetchedresutlscontrollers,它需要謂詞提取,我不能手動過濾。 – 2012-01-13 06:28:24

回答

0

我不跟transformableAttribute這是核心數據的一個元素,我還沒有坐進使用,但如果我還記得你不能對他們的謂詞。 (所以如果我錯了,請有人叫我上這個)

但是,當我看到你的transformableAttributearray of string我只想說why do you want an array in a database?

爲什麼不有關係嗎?一對多關係,如果你的數組可以有不同數量的字符串。

核心數據是數據的基礎上的抽象,在DB你不使用數組,你用表。這可能會簡化你的生活,並使取材成爲可能。

+0

這似乎是真的。當我用可變形屬性直接搜索NSPredicate時,許多人發現你不能這樣做。可轉換屬性作爲二進制數據存儲在數據庫中,因此對其執行SQL查詢將不起作用。 – 2012-01-13 06:29:05

相關問題