按名称搜索核心数据用户

时间:2013-03-06 19:38:19

标签: ios objective-c search core-data

我正在尝试获取一个用户列表,这些用户的名字是从tableview中选择的,并存储在所选的数组中。

我的代码出了什么问题?对不起,这是我第一次使用CoreData,所以我真的不知道出了什么问题。

NSFetchRequest *request= [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"AUser"   inManagedObjectContext:_managedObjectContext];
for (id a in selected) {
   NSPredicate *predicate =[NSPredicate predicateWithFormat:@"name==%@",a]; //each user has a name attribute
   [request setEntity:entity];
   [request setPredicate:predicate];

   NSError *error = nil;

   NSArray *array = [_managedObjectContext executeFetchRequest:request error:&error];
   //This array is always empty! Why? What am I doing wrong with the request
}

如果您需要更多信息/进一步说明,请告诉我。

其他需要注意的事项 - 没有警告/错误迹象 - 此处未声明的所有变量都在其他地方声明

非常感谢!

1 个答案:

答案 0 :(得分:3)

由于您没有收到任何错误响应,因此空数组意味着提取已成功完成,但未找到满足谓词的任何内容。在您的代码中,这意味着selected不包含可在数据存储中找到的name值。

您的代码似乎假设selectedNSString的数组,其匹配某些存储对象的name值。如果不是这种情况 - 如果它包含其他内容,那么NSString可能 - 预期会出现空集。 a被声明为id的事实让我想知道那里到底是什么。