簡體   English   中英

在Objective-C中反轉字符串數組

[英]Reverse an Array of String in Objective-C

我想在Objective-C中反轉一個字符串數組。

我知道這樣做有一個內置方法:

NSArray* reversedArray = [[inputString reverseObjectEnumerator] allObjects];

但我想通過如下編碼實現相同的功能,並收到以下錯誤。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {

    NSMutableArray *inputString = [NSMutableArray arrayWithObjects:@"a", @"b", @"c", @"d", @"e", @"f", @"g", @"h", @"i", nil];

        int lenArray= (int)[inputString count];

        NSMutableArray *reverseString=[[NSMutableArray alloc]initWithCapacity:lenArray];

        for(int i=lenArray-1;i>0;i--)
        {
            [reverseString insertObject:inputString[i] atIndex:i];
        }
      return 0;
    }
  }

由於未捕獲的異常“ NSRangeException”而終止應用程序,原因:“-[__ NSArrayM insertObject:atIndex:]:索引8超出了空數組的范圍”

[reverseString insertObject:inputString[i] atIndex:i]; 是問題-特別是atIndex:i部分。 您已經創建了具有足夠大容量的可變數組,但是該數組仍然為空,因此在此處指定索引並不是您要執行的操作。

相反,只需使用addObject: [reverseString addObject:inputString[i]];

嘗試這個:

for (int i = lenArray-1; i >= 0; i--) {
    [reverseString addObject:inputString[i]];
}

注意:只需使用addObject:並將for循環條件更改為i >= 0 ,否則將丟失“ a”。

請享用!

這是完整的解決方案:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {

        NSMutableArray *inputString = [NSMutableArray arrayWithObjects:@"a", @"b", @"c", @"d", @"e", @"f", @"g", @"h", @"i", nil];
      //  NSArray* reversedArray = [[inputString reverseObjectEnumerator] allObjects];

            int lenArray= (int)[inputString count];

            NSMutableArray *reverseString=[[NSMutableArray alloc]initWithCapacity:lenArray];

                for (int i = lenArray-1; i >= 0; i--) {
                    [reverseString addObject:inputString[i]];
                }

               for(int i=0;i<=lenArray-1;i++)
                {
                    NSLog(@"%@\n", [reverseString objectAtIndex:i]);
                }
    return 0;
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM