0

私は次のようなコアデータモデルを持っています:

ArticleCache:
- NSString *link

そして、私はそのようなカスタムオブジェクトをいくつか持っています:

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

私はNSArrays ArticlearticleList以下)を持っており、sを備えたCoreDataストアを持っていArticleCacheます。

ArticleCache一致するリンクが含まれているを取得しようとしています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];

これを実行すると、Core Dataストアにresults一致するものがあることがわかっているにもかかわらず、常に空になります。リクエストから述語を削除すると、すべてのが取得され、それぞれのを印刷して比較できるArticleCachesため、これを知っています。ArticleCachelink

何か案は?

4

1 に答える 1

2

「ArticleCache」エンティティの「link」属性は文字列であり、述語でこの文字列がArticleオブジェクトの配列に含まれているかどうかをテストしようとします。それは決して一致しません。

最初に文字列URLの配列を作成できます。例:

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

次に、それを述語で使用します。

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