10

私のオブジェクトグラフはシンプルです。

RSS フィードに関する情報を格納する feedentry オブジェクトと、「TagValues」オブジェクトにリンクする Tag と呼ばれる関係があります。両方の関係 (対と逆) は対多です。つまり、フィードは複数のタグを持つことができ、タグは複数のフィードに関連付けることができます。

リレーションシップを通じて Core Data クエリを実行する方法を参照しましたか? NSFetchRequest を作成しました。しかし、データを取得すると、次のような例外が発生します。

述語の NSInvalidArgumentException 実装されていない SQL 生成

私は何をすべきか?私はコアデータの初心者です:(私は何かひどく間違ったことをしたことを知っています...助けてください...

ありがとう

--

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Edit the entity name as appropriate.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"FeedEntry" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
// Edit the sort key as appropriate.
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"authorname" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];

[fetchRequest setSortDescriptors:sortDescriptors];

NSEntityDescription *tagEntity = [NSEntityDescription entityForName:@"TagValues" inManagedObjectContext:self.managedObjectContext];
NSPredicate *tagPredicate = [NSPredicate predicateWithFormat:@"tagName LIKE[c] 'nyt'"];          
NSFetchRequest *tagRequest = [[NSFetchRequest alloc] init];
[tagRequest setEntity:tagEntity];
[tagRequest setPredicate:tagPredicate];

NSError *error = nil;
NSArray* predicates = [self.managedObjectContext executeFetchRequest:tagRequest error:&error];


TagValues *tv = (TagValues*) [predicates objectAtIndex:0];
NSLog(tv.tagName); // it is nyt here...


NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tag IN %@", predicates];
[fetchRequest setPredicate:predicate];


// Edit the section name key path and cache name if appropriate.
// nil for section name key path means "no sections".
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController; 

--

4

2 に答える 2

29

ここでの鍵は「ANY」です

リンゴの例:

NSPredicate *predicate = [NSPredicate predicateWithFormat:
    @"ANY employees.firstName like 'Matthew'"];

http://developer.apple.com/mac/library/documentation/cocoa/conceptual/CoreData/Articles/cdBindings.html

于 2010-03-13T14:53:33.983 に答える
3

SQLite が必要ですか? 私は同様の問題に取り組んでおり、すべてがバイナリストアで期待どおりに機能することがわかりました。
SQLite をストアとして使用する場合には制限がありますが、制限をリストしたドキュメントはまだ見つけていませんが、存在するということだけです。

申し訳ありませんが、これ以上お役に立てません。

于 2009-05-31T04:20:55.057 に答える