我有一个数组,其中包含我从JSON获得的所有名称
NSArray *name = [newResponseObject valueForKey:@"name"];
我还有另一个数组,其中包含我从JSON获得的所有姓氏。
NSArray *lastname = [newResponseObject valueForKey:@"lastname"];
我要做的是创建另一个包含[name,lastname]的数组,我想显示我的选择器视图的值。例如“约翰·史密斯”。
我尝试使用arrayWithArray
,但这只是将所有值添加到一个数组中。
实现此目的的正确方法是什么?
答案 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);
这将导致以下输出:
First and last names = (
"John Smith",
"Ralph Jones",
"Bob Miller"
)
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]?还可以确保每个人都有一个名字和姓氏吗?