如何计算字典中的字典数量obj c?

时间:2014-07-23 17:26:32

标签: objective-c dictionary

我试过了:

NSUInteger *length = [dictionary count];

但是这会抛出“指针转换不兼容的整数”警告。

基本上我的字典是这样的:

{
     'thing1' {
            'item1' : 'item1value'
               }

     'thing2' {
            'item2: 'item2value'
               }
 }

等。你明白了。

我想知道的是字典中有多少“东西”,而不是有多少项或项目值。

2 个答案:

答案 0 :(得分:2)

NSUInteger是一个基本的整数类型,而不是一个对象,[dictionary count]返回一个NSUInteger,而不是指向一个(NSUInteger *)的指针不兼容的整数到指针转换警告来自。

只需删除*

NSUInteger length = [dictionary count];

答案 1 :(得分:0)

我将假设您想要计算一系列嵌套字典和/或数组中的对象数。

@implementation NSDictionary (RecursiveCount)
- (NSUInteger)recursiveCount {
    return self.allValues.recursiveCount;
}
@end

@implementation NSArray (RecursiveCount)
- (NSUInteger)recursiveCount {
    int count = 0;
    for (id object in self) {
        if ([object isKindOfClass:[NSDictionary class]] || [object isKindOfClass:[NSArray class]]) {
            count += [object recursiveCount];
        } else {
            ++count;
        }
    }
    return count;
}
@end

- (void)testRecursiveCount {
    NSDictionary *dict = @{
                           @"key1" : @[@1, @2, @3],
                           @"key2" : @{@"blah" : @[@[], @1, @[@1, @2]]},
                           @"key3" : @4,
                           @"key5" : @[@{@"blah":@[@{@1:@1}]}],
                           };
    XCTAssertEqual(dict.recursiveCount, 8, @"dictionary");

    NSArray *array = @[
                       @[@1, @2, @3],
                       @{@"blah" : @[@[], @1, @[@1, @2]]},
                       @4,
                       @[@{@"blah":@[@{@1:@1}]}],
                       ];
    XCTAssertEqual(array.recursiveCount, 8, @"array");
}

如果你想要的只是一个浅薄的计数,解决方案是微不足道的。

dictionary.count;