【发布时间】:2013-01-21 08:35:19
【问题描述】:
我有一个 NSArray,其中包含一些“城镇”(从 json 数据库中获取这些城镇),但数组中有一些城镇 2 或 3 次,我必须删除这些城镇。
我该如何解决这个问题?在 x 代码中使用 for 循环或特定函数?
请帮忙!
【问题讨论】:
-
我们怎么知道?您没有向我们展示任何代码或告诉我们任何有助于我们评估问题的信息。
标签: iphone xcode arrays nsarray
我有一个 NSArray,其中包含一些“城镇”(从 json 数据库中获取这些城镇),但数组中有一些城镇 2 或 3 次,我必须删除这些城镇。
我该如何解决这个问题?在 x 代码中使用 for 循环或特定函数?
请帮忙!
【问题讨论】:
标签: iphone xcode arrays nsarray
您可以遍历所有城镇,如果其中不存在,则仅将其添加到“uniqueItems”中
//Towns is an array of strings in this case
NSMutableArray *uniqueItems = [NSMutableArray array];
for (NSString *town in towns)
if (![uniqueItems containsObject:town])
[uniqueItems addObject:town];
【讨论】:
单行方案,非ARC项目需要添加autorelease
NSArray *array = // your array
NSArray filteredArray = [[[NSOrderedSet alloc] initWithArray:array] array];
【讨论】:
您可以将您的数组转换为只能保存唯一值的 NSSet。
NSArray *array = ... // Your array of "towns"
NSSet *set = [[NSSet alloc] initWithArray:array];
NSArray *unique = [set allObjects];
如果您使用自定义数据类,请务必实现isEqual:
【讨论】:
这是执行此操作的过程,
NSArray *to = // your towns;
NSSet *set = [[NSSet alloc]initWithArray:towns];
arryl = [set allObjects];
【讨论】:
您可以为此使用valueForKey 方法。
这意味着您可以创建一个数组的 NSSet,然后根据键获得值
NSSet *uniqueStates = [NSSet setWithArray:[myArrayOfCustomObjects valueForKey:@"state"]];
【讨论】: