2012-09-18 28 views
-4

我喜歡將字符串標記爲字符並將標記存儲在字符串數組中。我正嘗試使用下面的代碼,因爲我使用C符號來訪問數組,所以無法正常工作。什麼需要改變以代替旅行路線[i]?ios中的字符串標記器

NSArray *tokanizedTravelPath= [[NSArray alloc]init]; 
for (int i=0; [travelPath length]; i++) { 
    tokanizedTravelPath[i]= [travelPath characterAtIndex:i]; 
+3

將字符串拆分爲單個字符不是「標記」它。 –

回答

1

您需要的NSMutableArray設置數組(否則你不能改變它的對象)。還有,你只能插入對象的數組中,這樣你就可以的每一個元素:
- 插入的NSString包含角色;
- 改用C風格的數組。
這是如何與NSMutableArray的事:

NSMutableArray *tokanizedTravelPath= [[NSMutableArray alloc]init]; 
for (int i=0; i<[travelPath length]; i++) 
{ 
    [tokanizedTravelPath insertObject: [NSString stringWithFormat: @"%c", [travelPath characterAtIndex:i]] atIndex: i]; 
} 
+0

這段代碼不會工作,因爲for-condition是錯誤的。看我的帖子。 – vikingosegundo

+0

哦,是的,沒有看到它。編輯。 –

1

不能存儲unichar S IN的NSArray*。你究竟想要完成什麼? NSString*已經是unichar的集合的一個很好的代表,並且您已經擁有其中的一個。

1

我在你的代碼中計數3個錯誤,我在我的回答結束時解釋它們。
首先,我想告訴你一個更好的方法來分解刺入它的字符。


雖然我與凱文同意的NSString是Unicode字符很大的代表性已經,您可以使用此基於塊的代碼,將其分割爲多個子並將其保存到一個數組。

表格文檔:

enumerateSubstringsInRange:options:usingBlock:
枚舉的字符串指定範圍的指定類型的 子串。

NSString *hwlloWord = @"Hello World"; 
NSMutableArray *charArray = [NSMutableArray array]; 
[hwlloWord enumerateSubstringsInRange:NSMakeRange(0, [hwlloWord length]) 
           options:NSStringEnumerationByComposedCharacterSequences 
          usingBlock:^(NSString *substring, 
             NSRange substringRange, 
             NSRange enclosingRange, 
             BOOL *stop) 
{ 
    [charArray addObject:substring]; 
}]; 
NSLog(@"%@", charArray); 

輸出:

(
    H, 
    e, 
    l, 
    l, 
    o, 
    " ", 
    W, 
    o, 
    r, 
    l, 
    d 
) 

但實際上,你的問題是另一種性質的:

  • NSArray是不可改變的。一旦實例化,它不能被改變。對於可變陣列,可以使用NSArray子類NSMutableArray

  • 此外,characterAtIndex不會返回一個對象,而是一個原始類型 - 但這些不能保存到NSArray。您必須將其包裝到NSString或其他表示中。

    您可以改爲使用substringWithRange

    NSMutableArray *tokanizedTravelPath= [NSMutableArray array]; 
    for (int i=0; i < [hwlloWord length]; ++i) { 
        NSLog(@"%@",[hwlloWord substringWithRange:NSMakeRange(i, 1)]); 
        [tokanizedTravelPath addObject:[hwlloWord substringWithRange:NSMakeRange(i, 1)]]; 
    } 
    
  • 此外,您的for循環是錯誤的for循環條件不正確。它必須是for (int i=0; i < [travelPath length]; i++)