0

CD へのフェッチ要求をフィルタリングしようとしていますが、最初は機能していましたが、現在は空の配列を返しています。エンティティ (Provider) を確認しましたが、フィルター処理しようとしているキー名 (providerName) が正しいことを確認しました。SQLite DB を確認したところ、探している providerName と一致する名前のレコードがそこにあります。(下の添付画像を参照)。誰かが私のコードをレビューして、私が何か間違っているかどうかを確認できますか? ありがとう:

- (NSArray* ) filterItemsFromCoreData : (NSArray* ) filters { 

//create a managed object context
NSManagedObjectContext* context = [self managedObjectContext];

//create error container and fetch request
NSError* errMsg;
NSFetchRequest* fetchRequest = [[NSFetchRequest alloc] init];

//get our filters from passed array
NSString* filterProviderName = [filters objectAtIndex:0];
NSString* filterProviderZip = [filters objectAtIndex:1];
NSString* filterProviderPhone = [filters objectAtIndex:2];

//create predicate
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"providerName == %@", filterProviderName];

//create entity description
NSEntityDescription *entity = [NSEntityDescription
                               entityForName:@"Provider" inManagedObjectContext:context];

//add entity and predicate to fetch request
[fetchRequest setEntity:entity];
[fetchRequest setPredicate:predicate];

//get the objects
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&errMsg];
NSLog(@"%@", fetchedObjects);
return fetchedObjects;
}

エンティティ画面キャプチャ エンティティのスクリーン キャップ

SQLite DB SQLite DB

4

1 に答える 1

0

述語フォーマットのフォーマット指定子%@を単一引用符で囲むように変更します'%@'

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"providerName == '%@'", filterProviderName];

これにより、結果が再び返されるはずです。

于 2012-07-16T12:55:39.513 に答える