0

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

- (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);
}

谢谢你

4

2 回答 2

1

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

- (NSString *) reverseWords
{
    NSArray *tab_words  = [self componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    NSArray *reversed   = [[tab_words reverseObjectEnumerator] allObjects];
    NSString *result    = [reversed componentsJoinedByString:@" "];
}   
于 2012-06-21T15:13:32.880 回答
0

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

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

于 2012-06-21T15:14:40.650 回答