从字典中动态打印多个数组作为分隔的字符串?

时间:2014-10-14 10:17:11

标签: ios objective-c arrays xcode

我对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”)。作为一个初学者,我真的无法想象这样做的正确方法。

为了有效完成此任务,我该怎么做?

2 个答案:

答案 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,...等)