2013-03-13 9 views
5

Sto cercando di stampare un NSSet su una singola riga, la separazione della virgola ma nessuna virgola o spazio finale. come posso fare questo?Obiettivo-C Come stampare NSSet su una riga (nessuna virgola/spazio finale)

So che questo funziona per un array:

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

ma dal momento che gruppi non hanno l'indicizzazione non posso fare questo.

grazie

risposta

10

Si può sempre fare una matrice di un insieme, come questo:

NSArray *myArray = [mySet allObjects]; 

Dopo di che, si può ottenere la stringa con componentsJoinedByString::

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

Naturalmente puoi ottenere lo stesso effetto con un semplice loop simile a quello nel tuo post:

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

Uso del ciclo non c'è una virgola tra il primo e il secondo elemento con la costruzione della stringa. – aqua

+0

@ aqua L'hai provato? Dovrebbe essere lì. – dasblinkenlight

7

garantita gli oggetti del set come un array e utilizzare componentsJoinedByString:

NSSet *myset = ....; 
NSString *joinedString = [[myset allObjects] componentsJoinedByString:@", "]; 
Problemi correlati