2013-07-23 42 views
4

我希望能寫的東西,如:爲什麼NSString不支持objectAtIndexedSubscript以及如何解決?

NSString *foo = ...; 
unichar c = foo[i]; 

,但奇怪的是,NSString通過objectAtIndexedSubscript不支持數組索引。爲什麼不呢?

要解決此問題,實施類別(例如NSString+Indexing)以擴展NSString是否合理?

+9

但unichar不是一個對象。 – cahn

+0

你看過NSString類的參考嗎?你對'unichar c = [string characterAtIndex]'說什麼? –

回答

4

上的NSString添加一個類別與方法:

-(id)objectAtIndexedSubscript:(NSUInteger)idx 
{ 
    if(idx >= self.length) 
    { 
     return nil; 
    } 

    return @([self characterAtIndex:idx]); 
} 

,並調用它像這樣:

unichar c = [foo[i] unsignedShortValue] 

注意是c爲0時,雙方字符是空字符,或索引超出界限。

+0

但是,這是一個明智的解決方案? (OP的問題) –

+0

這不是OP所要求的 – Can

+0

Ohhhhhhhhh ... Duh ...傻了,爲什麼我沒有意識到這一點?......「unichar」不是一個Objective-C對象;因此,'objectAtIndexedSubscript'對'NSString'沒有意義。這就是爲什麼它不支持它,而不能。 –

相關問題