繁体   English   中英

如何将NSArray输出连接到用逗号分隔的NSString

[英]How to join an NSArray output to an NSString separated with commas

我正在使用以下代码尝试将数组输出连接到NSString。

NSArray  *array1 = [NSArray arrayWithObjects:[item objectForKey:@"id"], nil];
NSString *joinedString = [array1 componentsJoinedByString:@","];

NSLog(@"joinedString is %@", joinedString);

我希望这个输出连接的字符串为:join string是55,56,57,66,88 ......等...输出的时刻是:

2013-03-05 13:13:17.052  [63705:907] joinedString is 55
2013-03-05 13:13:17.056  [63705:907] joinedString is 56
2013-03-05 13:13:17.060  [63705:907] joinedString is 57
2013-03-05 13:13:17.064  [63705:907] joinedString is 66

您可能正在循环中运行join方法。

我想这就是你想要的。

NSMutableArray * array1 = [NSMutableArray array]; // create a Mutable array

for(id item in items){
      [array1 addObject:[item objectForKey:@"id"]]; // Add the values to this created mutable array
}

NSString *joinedString = [array1 componentsJoinedByString:@","];

NSLog(@"joinedString is %@", joinedString);

你可以这样做,

举个例子

NSArray *array=@[@"A",@"B",@"C"];
NSString *string=[array componentsJoinedByString:@","];
NSLog(@"%@",string);

输出是:

A,B,C

什么你写的正确可能是[item objectForKey:@"id"]一旦检查这一个[item objectForKey:@"id"]关系。

NSMutableArray *array = [[NSMutableArray alloc] 
                             initWithObjects:@"55",@"56",@"57",@"58", nil];

    NSString *joinedString = [array componentsJoinedByString:@","];
        NSLog(@"%@",joinedString);

我一直在评论这里的几个答案,并发现大多数答案只是提供代码作为解决此代码的答案,其原因是因为提供的代码(参见提供的代码)完全正常。

(由提问者提供)

NSArray  *array1 = [NSArray arrayWithObjects:[item objectForKey:@"id"], nil];
NSString *joinedString = [array1 componentsJoinedByString:@","];

NSLog(@"joinedString is %@", joinedString);

由于用户没有提供如何创建item NSDictionary我假设已经创建了一个包含一些NSDictionariesNSArray

NSArray *array = [[NSArray alloc] initWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:@"55", @"id", nil],
                  [NSDictionary dictionaryWithObjectsAndKeys:@"65", @"id", nil],
                  [NSDictionary dictionaryWithObjectsAndKeys:@"75", @"id", nil],
                  [NSDictionary dictionaryWithObjectsAndKeys:@"65", @"id", nil],
                  nil];

问题是尚未提供的代码,因为我们知道, item是一个NSDictionary我们知道, [item objectForKey:@"id"]不会返回它返回一个个人项目NSArray的ID。 所以基于它是否是一个NSArray它会记录像joinedString is (55, 56, 57...)"这样的东西joinedString is (55, 56, 57...)" 。我们也知道它不能只是一个字符串,因为我们也只有一个值而不是它会记录一些像这样的东西, joinedString is 55,再次这不是想要的东西。获得所提供的东西的唯一方法就是拥有这样的东西

 for(NSDictionary *item in array) {

    NSArray  *array1 = [NSArray arrayWithObjects:[item objectForKey:@"id"], nil];
    NSString *joinedString = [array1 componentsJoinedByString:@","];

    NSLog(@"joinedString is %@", joinedString);
 }

因此,如果是这种情况,那么解决这个问题的方法就是这样做

  NSMutableArray  *array1 = [NSMutableArray array];
  for(NSDictionary *item in array) {

     [array1 addObject:[item objectForKey:@"id"]];

  }
  // Note that this doesn't need to be in a for loop `componentsJoinedByString:` only needs to run once.
  NSString *joinedString = [array1 componentsJoinedByString:@","];
  NSLog(@"joinedString is %@", joinedString);

这个的输出是(按照用户的意愿)

  joinedString is 55,65,75,65

一旦提问者提供了丢失的代码,我将根据代码纠正他的答案,但在此之前我假设。

编辑:

首先检查[item objectForKey:@"id"]它是否合适?

然后使用以下代码:

NSArray  *array1 = [NSArray arrayWithObjects:[item objectForKey:@"id"], nil];
NSString *commaSpStr;

commaSpStr = [array1 componentsJoinedByString:@", "];

NSLog(@"%@", commaSpStr);

您每次都在重新创建 array1 创建array1的实例变量, [item objectForKey:@"id"]插入[item objectForKey:@"id"]值,您将看到joinedString将被更新。

NSMutableArray *arr = [[NSMutableArray alloc] init];

for (NSDictionary *item in array) {
    [arr addObject:[item objectForKey:@"id"]];
}

NSString *joinedStr = [arr componentsJoinedByString:@","];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM