繁体   English   中英

[Xcode]如何根据类型计算NSArray

[英][Xcode]How to count NSArray according to type

我想问一下如何计算数组中的对象类型。 例如

这是我的数据类

+ (id)LocationWithID:(NSString *)UniqueID name:(NSString *)name address:(NSString *)address latitude:(float )latitude longitude:(float )longitude locationtype:(NSString *)locationtype country:(NSString *)country distance:(float )distance;

这是我的阵列

[array addObject:[dataclass LocationWithID:UniqueID name:name address:address latitude:latitude longitude:longitude locationtype:locationtype country:country distance:distance]];

我想算出这个对象中有多少个国家。 通常我们使用[数组计数]; 但这会计算数组中的所有对象。 现在在我的情况下,我想计算非重复对象,例如我有一个数组包含3个英国,5个美国,7个日本,3个中国,我想要的结果是国家类型= 4。

我想根据国家/地区类型为Table View创建几个部分。 任何人?

枚举数组中的每个项目,并为每个项目获取国家/地区并将其添加到NSMutableSet。 枚举后,集合的大小是唯一国家/地区的数量。

如果您正在创建一个表,并且您只希望表格为每个国家/地区设置一个部分,那么可能有更好的方法,但我不知道。 我猜这就像绑定表中的相应属性,用于在数组控制器或数组控制器的元素中创建正确的值。

您可以使用字典将具有相同国家/地区的对象放在单独的数组中:

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
for (dataclass *location in array) {
    if (![dictionary objectForKey:location.country]) {
        [dictionary setObject:[NSMutableArray array] forKey:location.country];
    }
    [(NSMutableArray *)[dictionary objectForKey:location.country] addObject:location];
}

现在,您不仅可以获得这样的不同国家/地区的数量:

int countriesCount = [dictionary count];

但是,也可以使用相应国家/地区的位置轻松填充表格视图的每个部分。

您可以检索名称为countryName的特定国家/地区的所有位置,如下所示:

NSArray *locationsForCountry = [dictionary objectForKey:countryName];

你也可以列出所有这样的国家:

NSArray *countries = [[dictionary keyEnumerator] allObjects];

NSArray本身没有这个功能,因此,正如其他人所指出的那样,为每个国家保留一个单独的计数记录是最容易的。 执行此操作的最佳方法是创建NSCountedSet对象,并在将数据对象添加到数组时将国家/地区添加到该对象。

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSCountedSet_Class/Reference/Reference.html

要获取任何国家/地区的计数,只需调用[set countForObject:country]即可。 简单!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM