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 都将为 0。

于 2013-07-23T03:52:12.813 回答