2

次のコードを使用して、配列出力を 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
4

7 に答える 7

10

ループ内で 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);
于 2013-03-05T13:21:50.307 に答える
7

次のように実行できます。

たとえば

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

出力は次のとおりです。

A,B,C
于 2013-03-05T13:17:47.770 に答える
1

ここでいくつかの回答についてコメントしましたが、ほとんどの回答は、このコードを解決するための回答として提供されたコードを提供しているだけであることがわかりました。その理由は、提供されたコード (提供されたコードを参照) が完全に正常に動作するためです。 .

(質問者が提供)

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

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

ユーザーが の作成方法を提供していないため、いくつかを含む が作成されているitem NSDictionaryと想定していますNSArrayNSDictionaries

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

問題は、提供されていないコードにあります。これは、 IDの を返す個々のアイテムを返さないことがわかっているitemためです。したがって、それが のようなログに記録されるかどうかに基づいて。また、値が1つしかないため、文字列だけではないこともわかっているため、このようなものをログに記録しますが、これは必要なものではありません。提供されたものを取得する唯一の方法は、このようなものを持つことですNSDictionary[item objectForKey:@"id"]NSArrayNSArrayjoinedString 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

質問者が不足しているコードを提供したら、そこのコードに基づいて回答するように彼を修正しますが、それまでは想定しています。

于 2013-03-05T14:29:42.887 に答える
1

あなたが書いていることは、1つの正しいものが問題になる可能性があるため、[item objectForKey:@"id"]これを1回チェックしてください。

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

    NSString *joinedString = [array componentsJoinedByString:@","];
        NSLog(@"%@",joinedString);
于 2013-03-05T13:24:06.747 に答える
0

あなたは毎回再作成しています。 array1のインスタンス変数を作成し、それに値をarray1挿入すると、更新される[item objectForKey:@"id"]ことがわかります。joinedString

于 2013-03-05T13:58:52.030 に答える
0

編集:

最初[item objectForKey:@"id"]にそれが適切かどうかを確認してください??

そして、次のコードを使用します。

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

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

NSLog(@"%@", commaSpStr);
于 2013-03-05T13:21:47.840 に答える