如何知道快速枚举中下一个对象是否为空?

时间:2012-06-21 15:02:39

标签: objective-c methods enumeration

我想反转一个句子,但我不知道如何在快速枚举中正确获取下一个对象而没有任何问题:/

- (NSString *) reverseWords
{
    NSString    *result = [[NSString alloc] init];
    NSArray     *tab_words = [self componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    NSEnumerator    *reversed = [tab_words reverseObjectEnumerator];
    for (NSString *word in reversed)
    {
        result = [result stringByAppendingString:word];
        // Bug here
        if ([reversed nextObject])
            result = [result stringByAppendingString:@" "];
    }
    return (result);
}

你好

2 个答案:

答案 0 :(得分:1)

有一种更简单的方法来反转句子而不是枚举它。您可以获取反转数组,然后将其与空格连接(使用componentsJoinedByString:方法)以生成另一个NSString

- (NSString *) reverseWords
{
    NSArray *tab_words  = [self componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    NSArray *reversed   = [[tab_words reverseObjectEnumerator] allObjects];
    NSString *result    = [reversed componentsJoinedByString:@" "];
}   

答案 1 :(得分:0)

我建议反转数组,然后使用NSArray的componentsJoinedByString:方法。 有关反转数组的快速参考,请this SO question

这与现有代码非常相似,只需使用现有循环构建中间数组即可添加简单步骤。然后添加最后的componentsJoinedByString调用以获取返回字符串。