我试过了:
NSUInteger *length = [dictionary count];
但是这会抛出“指针转换不兼容的整数”警告。
基本上我的字典是这样的:
{
'thing1' {
'item1' : 'item1value'
}
'thing2' {
'item2: 'item2value'
}
}
等。你明白了。
我想知道的是字典中有多少“东西”,而不是有多少项或项目值。
答案 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;