我想篩選一個提取請求到CD,最初它的工作,但現在它返回一個空的數組。我已經檢查過實體(提供者)和我試圖過濾的關鍵名是正確的(providerName)。我已經檢查了SQLite數據庫和名稱與我正在尋找的providerName匹配的記錄。 (請參閱下面的附圖)。有人可以檢查我的代碼,看看我是否做錯了什麼?感謝:CoreData:篩選FetchRequest結果爲零
- (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數據庫
你確定你使用的是managedObjectContext?你應該在視圖控制器之間傳遞managedObjectContext而不是創建一個新的...請爲[self managedObjectContext] – ahmad 2012-07-16 12:54:29
ahmad提供代碼,謝謝你的回覆。這發生在視圖控制器中,這裏創建了mod,請參閱下面的回覆以獲取更多詳細信息。 – PruitIgoe 2012-07-16 13:00:08
您應該在AppDelegate中創建managedObjectContext,然後執行其中的一個if(self.managedObjectContext == nil){self.managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];在你需要訪問它的任何類的viewDidLoad中。 – jacerate 2012-07-16 15:31:53