将多个值作为单个条目添加到NSMutableArray并检索它

时间:2012-03-26 17:02:19

标签: iphone nsmutablearray

我从Web服务中检索6个值(例如名称,年龄,性别,地址,ID,标记)。所有都是字符串变量。我将这些字符串连接起来并将其添加到NSMutableArray。我将这个数组传递给另一个类,我需要分别使用这些字符串。那就是我需要能够分别从数组中检索这些值。我怎样才能做到这一点。 我是否需要添加“名称”,“年龄”等标签以及值以使检索更容易。什么是适当的方式。

编辑:我将它连接成一个字符串。我应该如何将我的值添加到集合中,以便我可以轻松地检索元素。

2 个答案:

答案 0 :(得分:3)

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;

通过这样做,您将能够按顺序访问每组字符串;然后单独访问每个字符串。

简而言之,不是通过将它们连接成另一个字符串来编码您的字符串集,而是将它们扩展到字典中以使检索更容易。

答案 1 :(得分:0)

我同意这里的最佳做法是使用字典或自定义对象。这样每个字符串都会与其同伴一起存储(例如,您将一个人的数据放在一起),而且您不必处理已经实现的混乱方法。听起来你可能想要保存数据,所以这里有一个片段来帮助你。如果那不是你想要的,请告诉我,我会修改我的回复以帮助你!

假设您有一个自定义对象类Person,您可以在其中创建和管理数据对象以通过应用程序委托保存到磁盘。你会做类似的事情:

Person *newPerson = [[Person alloc] init];
[newPerson setName:@"John"];
[newPerson setAge:@"25"];
[newPerson setSex:@"M"];
[yourAppDelegate.newPersonArray insertObject:newPerson atIndex:[mainDelegate.newPersonArray count]];