我对Objective-C很新,并且对字典,数组和表格提出了疑问。
情况: 我有一个包含数据的JSON字典。我可以通过密钥访问这些数据,即:
NSString = *myString [jsonDict valueForKey:@"somestring"];
其中一些字典项虽然包含数组而不是简单的字符串,但这就是我的麻烦所在。
[jsonDict valueForKey:@"someArrays"];
...包含动态数量的数组(每个都有一个值)。我想将这些数组作为字符串打印出来,列表中带有的项目符号(在HTML中我会使用ul)。有人告诉我,最好的方法是将每个数组打印到tableView / tableView单元格中吗?
我个人并不关心什么方法是最好的 - 我只需要一些有效的方法。 我应该如何将这些数组打印为单个字符串?
我目前的尝试是这样的:
NSArray *arrayData = [jsonDict valueForKey:@"arrays"];
for (int i = 0; i < [arrayData count]; i++) {
NSString *arrayStrings = [NSString stringWithFormat:@"%@ %@", @"\u2022", arrayData[i]];
}
但这只会打印出valueForKey中的最后一个数组:@“arrays”作为字符串。 剩下的就不见了(我想这是因为我试图将所有数组分配给一个字符串(“arrayStrings”)。作为一个初学者,我真的无法想象这样做的正确方法。
为了有效完成此任务,我该怎么做?
答案 0 :(得分:0)
是的,猜对了,您正在重置每次迭代中的字符串。试试这个:
NSString *arrayStrings = [arrayData componentsJoinedByString: @"\r\u2022"];
NSLog(@"%@", arrayStrings);
或者这个:
NSMutableString *arrayStrings = [NSMutableString new];
for (int i = 0; i < [arrayData count]; i++) {
[arrayStrings appendString:[NSString stringWithFormat:@"%@ %@", @"\r\u2022", arrayData[i]]];
}
NSLog(@"%@", arrayStrings);
答案 1 :(得分:0)
您确实每次都设置相同的字符串,因此记录(NSLog
)它只显示最后一个条目。
你&#34;应该&#34;尝试登录你的for循环,以确保你真正得到你需要的所有字符串。这将打印所有字符串。
现在,如果你想存储它,我建议你使用一个数组,如下所示。
// Preparing my array of strings
NSMutableArray *allTheString = [[NSMutableArray alloc]init];
NSArray *arrayData = [jsonDict valueForKey:@"arrays"];
for (int i = 0; i < [arrayData count]; i++) {
// According to your code, this gets you your correct log
NSString *arrayStrings = [NSString stringWithFormat:@"%@ %@", @"\u2022", arrayData[i]];
[allTheStrings addObject:arrayStrings]
// Because you just added it above, it is last in the array.
// You could addObjectAtIndex:i instead, and then log the objectAtIndex:i,
// but it's really the same if you start with an empty array
NSLog(@"This is my string : %@", [allTheStrings lastObject])
}
要从数组中获取字符串,我确定您知道[allTheStrings objectAtIndex:#]
,#
是索引(0,1,3,...等)