我希望能够写出如下内容:
NSString *foo = ...;
unichar c = foo[i];
但奇怪的是,NSString
不支持通过objectAtIndexedSubscript
进行数组索引。为什么不呢?
要解决这个问题,实施一个类别(例如NSString+Indexing
)以扩展NSString
会不明智?
答案 0 :(得分:4)
使用以下方法在NSString上添加类别:
-(id)objectAtIndexedSubscript:(NSUInteger)idx
{
if(idx >= self.length)
{
return nil;
}
return @([self characterAtIndex:idx]);
}
并将其称为:
unichar c = [foo[i] unsignedShortValue]
请注意,当字符为空字符或索引超出范围时,c将为0。