CoreDataとNSPredicateで予期しない動作が発生しています。大きなデータベース集団では、私は、互いに関連する異なる管理オブジェクトを持っています。しかし、私は以下の問題があります。私は全体のコンテキストを最初に保存しない限り、ID(NSNumber、この関数にNSStringとして与えられる)を与えるとき、私は結果を得ません。私はそれをしたいとは思っていません。コードは次のとおりです。コアデータ内のIDの検索
- (DOSite *) findSite:(NSString *) siteId {
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"(id = %@)", siteId];
[NSFetchedResultsController deleteCacheWithName:nil];
[[self fetchedResultsController].fetchRequest setPredicate:predicate];
NSError *fetchError;
if (![[self fetchedResultsController] performFetch:&fetchError]) {
// Handle the error.
// This is a serious error and should advise the user to restart the application
NSLog(@"Fetching data error: %@", [fetchError localizedDescription]);
}
if([[[self fetchedResultsController] fetchedObjects] count] == 0){
return NULL;
}
return (DOSite *)[[[self fetchedResultsController] fetchedObjects] objectAtIndex:0];
}
だから私はすべての項目で検索を行う(+[NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:]
を使用して)アイテムのx数は項目の右の量を返す追加するとき。
文字列(たとえばpredicateWithFormat:@"(name LIKE %@)"
)を検索すると肯定的な結果が得られますが、上記のコードpredicateWithFormat:@"(id = %@)
を使用すると結果はゼロになります。
結果が得られる唯一の方法は、コンテキスト全体を保存してfetchRequestを実行してから突然動作させることです。
私はIDを探して間違っている必要があります、私はちょうどそれを見つけて、この時点までにそれを絞り込むためにそれで二日間過ごすために見えないようです。これについて私に助言を与えることができる人はいますか?
はい、これはObjective-Cで慣れていなければならないことです。この場合は問題ではありませんでしたが、私は運勢のリリースでそれを変更します。それを指摘してくれてありがとう! –