doorxp-blog

doorxp.com

Keypath for any element in embedded NSArray

@interface NSArray (SubscriptKey)
@end
@implementation NSArray (SubscriptKey)
- (id)valueForUndefinedKey:(NSString *)key {
    if ([key isEqualToString:@"size"]) {
        return @(self.count);
    }
    else if ([key isEqualToString:@"first"]) {
        return self.firstObject;
    }
    else if ([key isEqualToString:@"last"]) {
        return self.lastObject;
    }
    else {
        NSInteger idx = [key integerValue];
        if(idx < 0) {
            idx = self.cout + idx;
        }
        if (idx>=0 && idx<self.cout)
            return self[idx];
        }
        else {
           return [super valueForUndefinedKey:key];
        }
    }
}
@end


    NSArray *arr = @[@"1",@"2", @"3"];
    NSDictionary *dict = @{@"k":arr};
    NSString *a = [dict valueForKeyPath:@"k.@last"];
    NSString *b = [dict valueForKeyPath:@"k.@2"];
    NSString *b = [dict valueForKeyPath:@"k.@-2"];


随意转载,注明出处:http://doorxp.com/?id=70

发表评论:

Powered By Z-BlogPHP 1.5.1 Zero

Copyright doorxp.com Rights Reserved.