0

我有一个像这样的核心数据模型:

ArticleCache:
- NSString *link

我有一些像这样的自定义对象:

Article:
- NSString *linkString //NSString version of link
- NSURL *link
- NSString *title

我有一个NSArrayof Articles(articleList如下),并且我有一个带有ArticleCaches 的核心数据存储。

我正在尝试检索在我的ArticleCaches 中具有匹配链接的 s articleList

NSEntityDescription *articleCacheObjectModel = [NSEntityDescription entityForName:@"ArticleCache" inManagedObjectContext:backgroundContext];

// Setup the fetch request  
NSFetchRequest *request = [[NSFetchRequest alloc] init];  
[request setEntity:articleCacheObjectModel];

//search will return all items matching the link
NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"link in %@", articleList];
[request setPredicate:searchPredicate];

NSError *error = nil;

NSArray *results = [backgroundContext executeFetchRequest:request error:&error];

当我运行它时,results它总是空的,尽管我知道ArticleCaches核心数据存储中有匹配的。我知道这一点,因为如果我从请求中删除谓词,我会得到所有的ArticleCaches,我可以打印出它们各自link的 s 并比较它们。

有任何想法吗?

4

1 回答 1

2

“ArticleCache”实体的“链接”属性是一个字符串,在您的谓词中,您尝试测试该字符串是否包含在对象数组中Article。那永远不会匹配。

您可以先构建一个字符串 URL 数组,例如

NSArray *urlList = [articleList valueForKey:@"linkString"];

然后在谓词中使用它:

[NSPredicate predicateWithFormat:@"link in %@", urlList];
于 2012-08-28T16:35:50.160 回答