我喜歡將字符串標記爲字符並將標記存儲在字符串數組中。我正嘗試使用下面的代碼,因爲我使用C符號來訪問數組,所以無法正常工作。什麼需要改變以代替旅行路線[i]?ios中的字符串標記器
NSArray *tokanizedTravelPath= [[NSArray alloc]init];
for (int i=0; [travelPath length]; i++) {
tokanizedTravelPath[i]= [travelPath characterAtIndex:i];
我喜歡將字符串標記爲字符並將標記存儲在字符串數組中。我正嘗試使用下面的代碼,因爲我使用C符號來訪問數組,所以無法正常工作。什麼需要改變以代替旅行路線[i]?ios中的字符串標記器
NSArray *tokanizedTravelPath= [[NSArray alloc]init];
for (int i=0; [travelPath length]; i++) {
tokanizedTravelPath[i]= [travelPath characterAtIndex:i];
您需要的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];
}
這段代碼不會工作,因爲for-condition是錯誤的。看我的帖子。 – vikingosegundo
哦,是的,沒有看到它。編輯。 –
不能存儲unichar
S IN的NSArray*
。你究竟想要完成什麼? NSString*
已經是unichar
的集合的一個很好的代表,並且您已經擁有其中的一個。
我在你的代碼中計數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++)
將字符串拆分爲單個字符不是「標記」它。 –