次のようなことが書けるようになりたいです。
NSString *foo = ...;
unichar c = foo[i];
しかし、奇妙なことに、NSString
による配列のインデックス付けはサポートされていませんobjectAtIndexedSubscript
。なぜそうしないのですか?
これを回避するには、NSString+Indexing
拡張するカテゴリ (例: )を実装するのが賢明でしょうNSString
か?
次のようなことが書けるようになりたいです。
NSString *foo = ...;
unichar c = foo[i];
しかし、奇妙なことに、NSString
による配列のインデックス付けはサポートされていませんobjectAtIndexedSubscript
。なぜそうしないのですか?
これを回避するには、NSString+Indexing
拡張するカテゴリ (例: )を実装するのが賢明でしょうNSString
か?
メソッドを使用して NSString にカテゴリを追加します。
-(id)objectAtIndexedSubscript:(NSUInteger)idx
{
if(idx >= self.length)
{
return nil;
}
return @([self characterAtIndex:idx]);
}
次のように呼び出します。
unichar c = [foo[i] unsignedShortValue]
c は、文字が null 文字の場合、またはインデックスが範囲外の場合の両方で 0 になることに注意してください。