只有当将对象添加到 nsset 成功时,我才能将对象添加到 nsmutablearray



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

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

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

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

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];

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

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

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

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

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

添加对象:
将给定对象追加到可变有序集(如果该对象还不是成员)。

注意:此类适用于 iOS 5 及更高版本。

最新更新