只有当nsset的addobject成功时,才能将对象添加到nsmutablearray吗?

时间:2013-10-22 02:14:19

标签: ios objective-c nsmutablearray nsarray nsset

我只想在集合中添加唯一对象,因此我使用的是NSSet。如果对象成功添加到该集合,我想将对象添加到数组。有没有办法做到这一点?当成功添加对象时,我可以让NSSet返回一些内容吗?

4 个答案:

答案 0 :(得分:2)

您可以在尝试添加之前和之后比较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];

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

我不确定你为什么要这样做,只要你在数组和set中添加相同的对象。只需将所有对象添加到NSSet,然后在其上调用下面的方法以获取NSMutableArray。

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

答案 3 :(得分:0)

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

  

ADDOBJECT:
  将给定对象附加到可变有序集(如果它还不是成员)。

注意:此课程为iOS 5及以上版本。