5 ms·
Subscripting only on OS X not iOS.
by upinsmoke 14y ago
Subscripting only on OS X not iOS.
- weiran 14y agoYou can use them on iOS 5.1 by implementing the methods the subscripts map to on NSArray and NSDictionary (as well as mutable) in categories. For NSArray: - (id)objectAtIndexedSubscript:(NSUInteger)index { return [self objectAtIndex:index]; } NSMutableArray: - (void)setObject:(id)object atIndexedSubscript:(NSUInteger)index { if (index < self.count){ if (object) [self replaceObjectAtIndex:index withObject:object]; else [self removeObjectAtIndex:index]; } else { [self addObject:object]; } } NSDictionary: - (id)objectForKeyedSubscript:(id)key { return [self objectForKey:key]; } NSMutableDictionary: - (void)setObject:(id)object forKeyedSubscript:(id)key { [self setObject:object forKey:key]; }
- michaelmior 14y agoIs it just as easy as creating categories that add these methods?
- puls 14y agoThe implementation already exists in iOS 5, you just need to make the compiler happy; a header that declares them is sufficient.
- BenjieGillam 14y agoApparently OSX 10.8 and iOS 6 bring support for subscripting to native NSArray/NSDictionary, but I think you can add subscripts to your own classes already just by implementing the following methods: -(id)objectAtIndexedSubscript:(NSUInteger)index; -(void)setObject:(id)object atIndexedSubscript:(NSUInteger)index; as weiran has shown for NS(Mutable)Array/NS(Mutable)Dictionary.
- skibrah 14y agoThat functionality is coming with Xcode 4.5
- lazerwalker 14y agoThe functionality is present for iOS, it just isn't being exposed. If you create a category header file (just header, not implementation) the compiler'll pick up on it and all will work fine. This isn't my code, but I've been happily using it for a week or so now: https://gist.github.com/3299750 https://gist.github.com/3299750