4

次のようなことが書けるようになりたいです。

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

しかし、奇妙なことに、NSStringによる配列のインデックス付けはサポートされていませんobjectAtIndexedSubscript。なぜそうしないのですか?

これを回避するには、NSString+Indexing拡張するカテゴリ (例: )を実装するのが賢明でしょうNSStringか?

4

1 に答える 1

4

メソッドを使用して NSString にカテゴリを追加します。

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

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

次のように呼び出します。

unichar c = [foo[i] unsignedShortValue]

c は、文字が null 文字の場合、またはインデックスが範囲外の場合の両方で 0 になることに注意してください。

于 2013-07-23T03:52:12.813 に答える