如何从数组元素中删除括号

时间:2013-07-12 23:45:48

标签: ios core-data uitextfield nsarray nsfetchrequest

我有一个iOS应用程序,它使用Core Data来保存从服务器检索的信息。我使用基本提取请求来获取给定managedObjects的所有entitymanagedObjects被放入一个数组中,用于填充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];

以下是响应的内容

enter image description here

这个问题已被问过几次,但似乎所有人都希望一次显示数组的所有内容而不是特定的元素。有些人推荐以下方法。

self.firstNameField.text = [[[objects valueForKey:@"firstName"] stringByReplacingOccurrencesOfString:@"(" withString:@""]description];

但是我得到了这个异常错误。

-[__NSArrayI stringByReplacingOccurrencesOfString:withString:]: unrecognized selector sent to instance

有人能指出我正确的方向吗?我意识到我可能会以错误的方式解决这个问题。不要犹豫,建议一个更好的方法来完成相同的任务。 Snippets真的有帮助!

1 个答案:

答案 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;