簡體   English   中英

NSSet的Coredata提取謂詞

[英]Coredata fetch predicate for NSSet

我有一個ManagedPhoto coredata對象,其中包含一個稱為標簽的NSSet屬性。 標簽集中的每個對象都是一個NSString。

我需要獲取所有具有特定值標簽(例如“ party”)的ManagedPhoto對象。 這就是我正在做的-

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"ManagedPhoto"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"SELF.tags == 'party'"];
NSArray *results = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil];

但是,即使我確定有包含“ party”標簽的ManagedPhotos,我也總是得到一個空結果數組。 我也嘗試過-

fetchRequest.predicate = [NSPredicate predicateWithFormat:@"SELF.tags IN %@", @[@"party"]];

我也嘗試了許多其他事情,但到目前為止沒有任何效果! 任何想法?

要獲取具有至少一個具有指定值的標簽的對象,應使用以下謂詞

[NSPredicate predicateWithFormat:@"ANY tags == 'party'"]

或更好

[NSPredicate predicateWithFormat:@"ANY tags == %@", @"party"]

但是我假設該集合被定義為可轉換的屬性,這意味着它以二進制存檔的形式存儲在SQLite文件中。 然后,上述查詢最多將對已經加載到托管對象上下文中的對象起作用,但不適用於存儲文件。

您可能應該將tags定義為與另一個具有String屬性(例如“ name”)的實體的多對多關系,然后使用謂詞查詢

[NSPredicate predicateWithFormat:@"ANY tags.name == %@", @"party"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM