2013-03-13 12 views
5

NSSetをカンマ区切りで1行に出力しようとしていますが、末尾にカンマまたはスペースはありません。これどうやってするの?Objective-C NSSetを1行に印刷する方法(末尾にカンマ/スペースなし)

私は、これは、配列のために働くことを知っている:

NSMutableString *outputStringArray = [[NSMutableString alloc] init]; 
    NSMutableArray *myArray = [[NSMutableArray alloc] initWithCapacity:10]; 

    for (int k = 0; k < [myArray count]; k++) { 
     [outputStringArray appendFormat:@"%@, ", [myArray objectAtIndex:k]]; 
    } 
    NSLog(@"%@", [outputStringArray substringToIndex:[outputStringArray length] - 2]); 

が、セットがインデックスを持っていないので、私はこれを行う傾けます。

おかげ

答えて

10

あなたは常にこのように、セットのうちの配列を作ることができます。その後

NSArray *myArray = [mySet allObjects]; 

、あなたがcomponentsJoinedByString:とあなたの文字列を取得できます。もちろん

NSString *str = [myArray componentsJoinedByString:@", "]; 

をあなたのポストに類似した単純なループで同じ効果を達成することができます:

BOOL isFirst = YES; 
for (id element in mySet) { 
    if (!isFirst) { 
     [outputStringArray appendString:@", "]; 
    } else { 
     isFirst = NO; 
    } 
    [outputStringArray appendFormat:@"%@", element]; 
} 
+0

を使用しています。 – aqua

+0

@aqua試しましたか?それはそこにあるはずです。 – dasblinkenlight

7

は配列としてあなたのセット内のオブジェクトを取得し、文字列を作成して第一及び第二の要素の間にカンマがない、あなたのループを使用してcomponentsJoinedByString:

NSSet *myset = ....; 
NSString *joinedString = [[myset allObjects] componentsJoinedByString:@", "]; 
関連する問題