2013-03-05 129 views
2

我使用以下代码尝试将数组输出连接到NSString中。如何将NSArray输出连接到以逗号分隔的NSString

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

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

我想这个输出连接字符串:加入字符串是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 
+2

joinedString = [joinedString stringByAppendingFormat:@“%@”,[array1 componentsJoinedByString:@“,”]]; – 2013-03-05 13:16:25

+0

为什么不去一个nsstring类别或函数 – amar 2013-03-05 13:16:26

+1

我不能相信你所展示的是,你的代码是正确的,尝试清理和再次构建。 – 2013-03-05 13:20:56

回答

10

您可能正在运行一个循环内的连接方法。

我想这就是你想要的。

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); 
7

你可以做到这一点的,

就拿

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

输出是:

A,B,C 
0

编辑:

首先检查[item objectForKey:@"id"]是正确与否?

,然后使用下面的代码:

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

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

NSLog(@"%@", commaSpStr); 
+0

应该'commaSpStr = [listOfSelectedItem componentsJoinedByString:@“,”]; NSLog(@“%@”,commaSpStr);'这不在'for循环之外? 'for loop'将对象添加到数组中,然后使用函数'componentsJoinedByString:'将它们的对象连接到一个字符串中:''''''''''''''''''''''''''''''''''请注意,我没有倒下,因为这可以很容易地纠正。 – Popeye 2013-03-05 13:28:57

+0

@ Popeye--首先检查我的答案,我检查了它,这是很好:( – iPatel 2013-03-05 13:33:08

+1

@iPatel你是对的,必须有一些功能,所以你不能downvote,而不会在评论中提出理由。@ downvoter认为。 – Dilip 2013-03-05 13:35:37

1

什么都你正在写在[item objectForKey:@"id"]一个正确,也可能是问题一经查实这一个以外的所有的罚款。

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

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

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

1

我一直在评论这里的几个答案,并发现大多数答案只是给出的代码作为解决此代码的答案,原因是因为代码提供了(请参阅提供的代码)完美无瑕。

(通过提问题的人提供)

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

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

由于用户没有提供如何itemNSDictionary创建我假设一个NSArray已创建其中包含一些NSDictionaries

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]; 

问题是没有提供的代码,因为我们知道itemNSDictionary我们知道[item objectForKey:@"id"]不会返回个别项目它返回ids的NSArray。所以根据它是否为NSArray它会记录类似joinedString is (55, 56, 57...)"。我们也知道,它不能只是一个字符串,因为我们也只有一个值,所以它会记录下这样的事情,并且这并不是我们想要的。让已经提供什么的唯一方法是有这样的事情

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 

一旦问题提问者提供缺少的代码,我会纠正他的回答基于存在的代码,但在那之前我假设。

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

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

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