合并数组的值

时间:2018-11-16 15:35:08

标签: objective-c

我有一个数组,其中包含我从JSON获得的所有名称

NSArray *name = [newResponseObject valueForKey:@"name"];

我还有另一个数组,其中包含我从JSON获得的所有姓氏。

 NSArray *lastname = [newResponseObject valueForKey:@"lastname"];

我要做的是创建另一个包含[name,lastname]的数组,我想显示我的选择器视图的值。例如“约翰·史密斯”。

我尝试使用arrayWithArray,但这只是将所有值添加到一个数组中。

实现此目的的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

有很多方法可以实现这一目标。

最简单的方法可能是在源处进行连接。

NSArray *fullName = [NSString stringWithFormat:@"%@ %@", [newResponseObject valueForKey:@"name"], [newResponseObject valueForKey:@"lastname"]];

答案 1 :(得分:0)

取决于您以后打算如何处理它们,应该决定如何决定存储它们。正如@Woodstock所提到的,您可以将它们存储在一个连接字符串数组“ name lastname”中,类似于下面的选项1。

但是从您的描述看来,您可能希望将它们存储为类似于下面的选项2的数组。

// option 1 storing them in concatonated strings
NSArray *firstNames = @[@"John", @"Ralph", @"Bob"];
NSArray *lastNames = @[@"Smith", @"Jones", @"Miller"];
NSMutableArray <NSString *> *firstAndLastNames = [NSMutableArray array];
for (NSInteger index = 0; index < firstNames.count; index++) {
    [firstAndLastNames addObject:[NSString stringWithFormat:@"%@ %@", [firstNames objectAtIndex:index], [lastNames objectAtIndex:index]]];
}
NSLog(@"First and last names = %@", firstAndLastNames);
// option 2 storing them in arrays
NSMutableArray <NSArray *> *firstAndLastNamesInArray = [NSMutableArray array];
for (NSInteger index2 = 0; index2 < firstNames.count; index2++) {
    [firstAndLastNamesInArray addObject:@[[firstNames objectAtIndex:index2], [lastNames objectAtIndex:index2]]];
}
NSLog(@"First and last names in array = %@", firstAndLastNamesInArray);

这将导致以下输出:

选项1:

First and last names = (
    "John Smith",
    "Ralph Jones",
    "Bob Miller"
)

选项2:

First and last names in array = (
        (
        John,
        Smith
    ),
        (
        Ralph,
        Jones
    ),
        (
        Bob,
        Miller
    )
)

使用第二个选项的好处是,如果您只想获取名字或姓氏,则只需按索引即可找到它(而不是必须尝试通过空格分隔名字和姓氏-某些名字或姓氏中也有空格,因此如果您使用选项1),这可能会弄乱您尝试仅获取其中一个名字的逻辑。

即使用选项2,您可以通过执行以下操作找到第三人的姓氏:

[[firstAndLastNamesInArray objectAtIndex:2] objectAtIndex:1]

另一种选择是创建一个Person对象,并使其具有firstName和lastName属性,然后存储一个Person对象数组。

您也没有提到的另一件事(但我认为是对的)是您要以正确的顺序从服务器获取的这些数组-即firstName [3]是否与lastName [ 3]?还可以确保每个人都有一个名字和姓氏吗?