2013-03-13 4 views
5

Próbuję wydrukować NSSet w jednym wierszu, oddzielenie przecinkami, bez spacji i spacji. jak mogę to zrobić?Cel-C Jak wydrukować NSSet w jednym wierszu (brak przecinka/spacji)

wiem, że to działa na tablicy:

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

ale ponieważ zestawy nie mają indeksowanie nie mogę tego zrobić.

dzięki

Odpowiedz

10

Zawsze można zrobić tablicę z zestawu, tak:

NSArray *myArray = [mySet allObjects]; 

Po tym, można uzyskać ciąg z componentsJoinedByString::

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

Oczywiście możesz osiągnąć ten sam efekt za pomocą prostej pętli podobnej do tej z twojego postu:

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

Korzystanie z pętli nie jest przecinek między pierwszym a drugim elementem w budowaniu ciąg. – aqua

+0

@aqua Spróbowałeś? Powinno tam być. – dasblinkenlight

7

Get obiektów w zestawie jako tablica i używać componentsJoinedByString:

NSSet *myset = ....; 
NSString *joinedString = [[myset allObjects] componentsJoinedByString:@", "]; 
Powiązane problemy