2013-07-12 2 views
0

У меня есть приложение 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]; 

Вот что ответ выглядит

enter image description here

Этот вопрос был запрошен d несколько раз, но все, похоже, ищут отображение всего содержимого массива сразу, а не определенного элемента. Некоторые рекомендуют метод ниже.

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

Но я получаю эту ошибку исключения.

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

Может ли кто-нибудь указать мне в правильном направлении? Я понимаю, что я ошибаюсь. Не стесняйтесь рекомендовать лучший метод для выполнения той же задачи. Фрагменты действительно помогают!

ответ

1

Ваш код возвращает массив, потому что вы задаете массив для valueForKey

[объекты 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 = [objects lastObject]; 
if (person) { 
    self.middleNameField.text = person.firstName; 
+0

Спасибо за ответ KHansenSF! Взял меня за секунду, чтобы заставить его работать, потому что '[objects valueForKey: @" firstName "]' должен быть '[object ...]', но как только я поймал, что он отлично выкатился. Отличное решение! Если вы хотите уточнить преимущества подкласса, которые вы предлагаете, я бы с удовольствием узнал! – Ben

+0

Вы абсолютно правы. Я толкнул пальцем этот и отредактировал свой ответ. Спасибо что подметил это! И извините, если это вас замедлило! – KHansenSF

Смежные вопросы