【问题标题】:Can I addobject to nsmutablearray only if addobject to nsset is successful?仅当将对象添加到 nsset 成功时,我才能将对象添加到 nsmutablearray 吗?
【发布时间】:2013-10-22 02:14:19
【问题描述】:

我只想将唯一的对象添加到集合中,这就是我使用 NSSet 的原因。如果一个对象成功添加到该集合中,我想将一个对象添加到一个数组中。有没有办法做到这一点?成功添加对象后,我可以让 NSSet 返回一些东西吗?

【问题讨论】:

    标签: ios objective-c nsmutablearray nsarray nsset


    【解决方案1】:

    您可以在尝试添加之前和之后比较 NSSet 的计数。

    NSInteger setCount = [mySet count];
    [mySet addObject:foo];
    if ([mySet count] > setCount) {
        // object was added
    }
    

    您还可以在添加对象之前执行 containsObject 测试:

    if ([mySet containsObject:foo]) {
        // object already exists
    } else {
        // object is not yet in the set
        [mySet addObject:foo];
        [myArray addObject:foo];
    }
    

    另一种选择是简单地将对象添加到集合中,然后在完成后将集合转换为数组:

    [mySet addObject:foo];
    NSArray *myArray = [mySet allObjects];
    

    【讨论】:

      【解决方案2】:

      在插入前后使用[set count] 来查看是否添加了任何内容。

      int prior = [set count];
      [set addObject:obj];
      if (prior < [set count]) {
        [array addObject:obj];
      }
      

      【讨论】:

        【解决方案3】:

        我不知道你为什么要这样做,只要你在你的数组和集合中都添加相同的对象。只需将所有对象添加到您的 NSSet,然后在其上调用以下方法即可获取 NSMutableArray。

        NSMutableArray *uniqueItems = [NSMutableArray arrayWithArray:[mySet allObjects]];
        

        【讨论】:

          【解决方案4】:

          您可以考虑使用NSMutableOrderedSet,这将允许您只维护 1 个集合而不是 2 个。

          添加对象:
          如果给定对象还不是成员,则将给定对象附加到可变有序集中。

          注意:此类是 iOS 5 及更高版本。

          【讨论】:

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