我正在尝试获取一个用户列表,这些用户的名字是从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
}
如果您需要更多信息/进一步说明,请告诉我。
其他需要注意的事项 - 没有警告/错误迹象 - 此处未声明的所有变量都在其他地方声明
非常感谢!
答案 0 :(得分:3)
由于您没有收到任何错误响应,因此空数组意味着提取已成功完成,但未找到满足谓词的任何内容。在您的代码中,这意味着selected
不包含可在数据存储中找到的name
值。
您的代码似乎假设selected
是NSString
的数组,其匹配某些存储对象的name
值。如果不是这种情况 - 如果它包含其他内容,那么NSString
可能 - 预期会出现空集。 a
被声明为id
的事实让我想知道那里到底是什么。