私はこのような何かを見て、私のCoreDataに格納されているオブジェクトがあります。CoreData fetchRequestは間違ってNULL値
:私はこのような「タイプ」プロパティに基づいて、これらのオブジェクトを取得していますidnametype 1 cat aaa 2 dog bbb 3 ape NULL
を
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:self.entityName];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"type != %@", @"aaa"];
fetchRequest.fetchBatchSize = 100;
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"type" ascending:YES]];
NSFetchedResultsController *fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"section" cacheName:nil];
fetchedResultsController.delegate = self;
NSError *error = nil;
[fetchedResultsController performFetch:&error];
したがって、タイプが「aaa」でないすべてのオブジェクトを取得しようとしています。
フェッチ要求が予期せず述語で指定されるように「AAA」タイプのオブジェクトだけでなく、タイプは以下をもたらす、(ヌル)に設定されていないオブジェクトだけでなく、省略:
idnametype 2 bar bbb
私が期待するものの代わりに:
述語形式:NOT (type IN {"aaa", "bbb"})
を使用すると同じ問題が発生します。これは私がこれを必要とする実際の方法です。この述部の結果、レコードが取得されません。
私は述部を指定しなければ、すべてのオブジェクトが正しくフェッチされるため、なぜこれが起こるのか分かりません。 NULLタイプを持つオブジェクトは、私は、述語を変更したい場合は、正しくフェッチ得るか:
[NSPredicate predicateWithFormat:@"type = null"];
に注意してください。上のすべては、問題がどのようなものであるかを示しています。私の実際のコードは、より複雑で、単純に述語フォーマットを使用しています。type != "aaa" OR type = null
は可能なら避けたいものです。
大変助かりました!
本当にありがとうございます。だから私は、述部にヌルテストを追加する方法はないと思います。 – Tonnie