我只想将唯一对象添加到集合中,因此我使用 NSSet 的原因。如果一个对象成功添加到该集合中,我想将一个对象添加到一个数组中。有没有办法做到这一点?成功添加对象后,我可以让 NSSet 返回一些东西吗?
问问题
134 次
4 回答
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];
于 2013-10-22T02:22:45.943 回答
1
在插入之前和之后使用[set count]
以查看是否添加了任何内容。
int prior = [set count];
[set addObject:obj];
if (prior < [set count]) {
[array addObject:obj];
}
于 2013-10-22T02:21:48.467 回答
0
只要您在数组和集合中添加相同的对象,我不确定您为什么要这样做。只需将所有对象添加到您的 NSSet,然后在其上调用以下方法即可获取 NSMutableArray。
NSMutableArray *uniqueItems = [NSMutableArray arrayWithArray:[mySet allObjects]];
于 2013-10-22T02:34:43.557 回答
0
您可以考虑使用NSMutableOrderedSet,它只允许您维护 1 个集合而不是 2 个。
addObject:
如果给定对象还不是成员,则将给定对象附加到可变有序集中。
注意:这个类是 iOS 5 及更高版本。
于 2013-10-22T03:55:25.893 回答