我有一个iOS应用程序,它使用Core Data来保存从服务器检索的信息。我使用基本提取请求来获取给定managedObjects
的所有entity
。 managedObjects
被放入一个数组中,用于填充tableViewController
。表中的每个单元格都有一个UITextField
,我试图将信息放入其中。我可以将数据放入文本字段,但每个元素都带有括号。 如何摆脱这些并只显示文字?
以下是获取请求:
NSManagedObjectContext *moc = self.managedObjectContext;
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"UserInfo" inManagedObjectContext:moc];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
NSArray *objects = [moc executeFetchRequest:request error:&error];
以下是我用来填充文本字段的内容:
self.middleNameField.text = [[objects valueForKey:@"firstName"] description];
self.middleNameField.text = [[objects valueForKey:@"middleName"] description];
self.lastNameField.text = [[objects valueForKey:@"lastName"] description];
以下是响应的内容
这个问题已被问过几次,但似乎所有人都希望一次显示数组的所有内容而不是特定的元素。有些人推荐以下方法。
self.firstNameField.text = [[[objects valueForKey:@"firstName"] stringByReplacingOccurrencesOfString:@"(" withString:@""]description];
但是我得到了这个异常错误。
-[__NSArrayI stringByReplacingOccurrencesOfString:withString:]: unrecognized selector sent to instance
有人能指出我正确的方向吗?我意识到我可能会以错误的方式解决这个问题。不要犹豫,建议一个更好的方法来完成相同的任务。 Snippets真的有帮助!
答案 0 :(得分:1)
您的代码返回一个数组,因为您要求数组提供valueForKey
[objects valueForKey:@“firstName”]
我会建议:
NSArray *objects = [moc executeFetchRequest:request error:&error];
NSManagedObject *object = [objects lastObject];
if (object) {
self.middleNameField.text = [object valueForKey:@"firstName"];
self.middleNameField.text = [[object valueForKey:@"middleName"];
self.lastNameField.text = [[object valueForKey:@"lastName"];
}
如果对象数组为空,您可能希望将这些字段设置为@“”。取决于他们之前是否可以填充。
如果您可以使用为模型生成的正确子类,我也不是使用NSManagedObject *对象的粉丝。假设有问题的类是Person
Person *person = [objects lastObject];
if (person) {
self.middleNameField.text = person.firstName;