Добавление нескольких значений в виде одной записи в NSMutableArray и извлечение его - PullRequest
0 голосов
/ 26 марта 2012

Я получаю 6 значений (скажем, имя, возраст, пол, адрес, идентификатор, тег) из веб-службы. Все являются строковыми переменными. Я объединяю эти строки и добавляю их в NSMutableArray. Я передаю этот массив в другой класс, где мне нужна каждая из этих строк отдельно. То есть мне нужно иметь возможность извлекать эти значения из массива отдельно. Как я могу это сделать. Нужно ли добавлять теги типа «Имя», «Возраст» и т. Д. Вместе со значениями, чтобы упростить поиск. Какой подходящий способ сделать это.

Редактировать: я объединяю его в одну строку. Как мне добавить свои значения в коллекцию, чтобы я мог легко извлекать элементы.

Ответы [ 2 ]

3 голосов
/ 26 марта 2012

IMO, наиболее подходящий способ сделать то, что вы пытаетесь сделать, это использовать NSMutableDictionary, который позволяет вам получить доступ к отдельным элементам на основе их ключа.

Пример:

loadedBuffers = [[NSMutableDictionary alloc] initWithCapacity:CD_BUFFERS_START];
[loadedBuffers setObject:bufferId forKey:filePath];
...
[loadedBuffers objectForKey:filePath]

Вам не нужно строго использовать словарь, но это сделает вашу жизнь намного проще.

В вашем случае (если я правильно понимаю) я бы сделал:

NSMutableArray* result = [NSArray arrayWithCapacity:kNUM_OF_ROWS];

NSString *name, *age, *sex....;

<for each set of strings from the web service>
    <retrieve strings>
    NSMutableDictionary dict = [NSMutableDictionary dictionaryWithCapacity:kNUM_OF_FIELDS];
    [dict setObject:name forKey:@"name"];
    ...
    [dict setObject:address forKey:@"address"];

    [result addObject:dict];
<end_for>

return result;

Поступив так, вы сможете последовательно обращаться к каждому набору строк; затем получите доступ к каждой строке по отдельности.

Короче говоря, вместо того, чтобы кодировать ваш набор строк путем объединения их в другую строку, вы бы расширили их в словаре, чтобы упростить поиск.

0 голосов
/ 26 марта 2012

Я бы согласился, что в этом случае лучше всего использовать словарь или пользовательский объект. Таким образом, каждая строка хранится вместе со своими компаньонами (например, у вас есть все данные одного человека), и вам не нужно иметь дело с грязным методом, который вы уже реализовали. Похоже, вы хотите сохранить данные, так что вот фрагмент, чтобы помочь вам. Если это не то, что вам нужно, дайте мне знать, и я изменю свой ответ, чтобы помочь!

Допустим, у вас есть пользовательский класс объектов Person, в котором вы создаете и управляете объектами данных для сохранения на диск через делегат приложения. Вы бы сделали что-то вроде:

Person *newPerson = [[Person alloc] init];
[newPerson setName:@"John"];
[newPerson setAge:@"25"];
[newPerson setSex:@"M"];
[yourAppDelegate.newPersonArray insertObject:newPerson atIndex:[mainDelegate.newPersonArray count]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...