为什么NSString不支持objectAtIndexedSubscript以及如何解决?

时间:2013-07-23 03:32:28

标签: objective-c nsstring

我希望能够写出如下内容:

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

但奇怪的是,NSString不支持通过objectAtIndexedSubscript进行数组索引。为什么不呢?

要解决这个问题,实施一个类别(例如NSString+Indexing)以扩展NSString会不明智?

1 个答案:

答案 0 :(得分:4)

使用以下方法在NSString上添加类别:

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

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

并将其称为:

unichar c = [foo[i] unsignedShortValue]

请注意,当字符为空字符或索引超出范围时,c将为0。