【问题标题】:xcode duplicates in arrray [closed]数组中的xcode重复[关闭]
【发布时间】:2013-01-21 08:35:19
【问题描述】:

我有一个 NSArray,其中包含一些“城镇”(从 json 数据库中获取这些城镇),但数组中有一些城镇 2 或 3 次,我必须删除这些城镇。

我该如何解决这个问题?在 x 代码中使用 for 循环或特定函数?

请帮忙!

【问题讨论】:

  • 我们怎么知道?您没有向我们展示任何代码或告诉我们任何有助于我们评估问题的信息。

标签: iphone xcode arrays nsarray


【解决方案1】:

您可以遍历所有城镇,如果其中不存在,则仅将其添加到“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];

【讨论】:

    【解决方案2】:

    单行方案,非ARC项目需要添加autorelease

    NSArray *array = // your array
    NSArray filteredArray = [[[NSOrderedSet alloc] initWithArray:array] array];
    

    【讨论】:

      【解决方案3】:

      您可以将您的数组转换为只能保存唯一值的 NSSet。

      NSArray *array = ... // Your array of "towns"
      NSSet *set = [[NSSet alloc] initWithArray:array];
      NSArray *unique = [set allObjects];
      

      如果您使用自定义数据类,请务必实现isEqual:

      【讨论】:

      • 有一个错误:没有可见的@interface for 'NSArray' 声明选择器'allObjects'
      • 因为你应该在 NSSet 对象上调用 allObjects !只需复制/粘贴代码。
      【解决方案4】:

      这是执行此操作的过程,

      NSArray *to = // your towns;
      NSSet *set = [[NSSet alloc]initWithArray:towns];
      arryl = [set allObjects];
      

      【讨论】:

        【解决方案5】:

        您可以为此使用valueForKey 方法。 这意味着您可以创建一个数组的 NSSet,然后根据键获得值

        NSSet *uniqueStates = [NSSet setWithArray:[myArrayOfCustomObjects valueForKey:@"state"]];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-05
          相关资源
          最近更新 更多