Objective-C如何在一行上打印NSSet(没有尾随逗号/空格)

flu*_*lux 5 objective-c

我试图在一行打印出一个NSSet,逗号分隔,但没有尾随的逗号或空格.我怎样才能做到这一点?

我知道这适用于数组:

    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]);
Run Code Online (Sandbox Code Playgroud)

但由于集合没有索引,我无法做到这一点.

谢谢

das*_*ght 10

你总是可以从一个集合中创建一个数组,如下所示:

NSArray *myArray = [mySet allObjects];
Run Code Online (Sandbox Code Playgroud)

之后,你可以得到你的字符串componentsJoinedByString::

NSString *str = [myArray componentsJoinedByString:@", "];
Run Code Online (Sandbox Code Playgroud)

当然,您可以通过类似于帖子中的简单循环来实现相同的效果:

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


Jor*_*ers 7

将集合中的对象作为数组获取并使用 componentsJoinedByString:

NSSet *myset = ....;
NSString *joinedString = [[myset allObjects] componentsJoinedByString:@", "];
Run Code Online (Sandbox Code Playgroud)