我有两个包含整数值的NSArray
。我想从两个数组中获取常用值,并且使用NSMutableSet
。
这是我的代码
`
NSMutableSet *set1 = [NSMutableSet setWithArray:array1]];
NSMutableSet *set2 = [NSMutableSet setWithArray:array2];
if (![set1 isEqualToSet:set2])
{
[set2 intersectSet:set1];
NSArray *commonArray = [set2 allObjects];
}
`
这是数组中的值 ` 数组1 ( 2, 3 )
数组2
(
2,
3
)
and values in
NSMutableSet`是
` 设置1 {( 2, 3 )}
SET2 {( 2, 3 )} `
根据条件和值,代码不会执行if()
条件内的行。但是这里if()
条件返回错误的值。
[set2 intersectSet:set1];
也将set2
视为空。
此代码有任何问题。
请帮我解决这个问题。
答案 0 :(得分:1)
这里有几件事,你需要NSNumber
使用NSMutableSet
,你不能只使用标准的int
。
NSNumber实际上是一个包含在类中的int,NSSet需要NSNumber,因为它处理对象。
if语句中的代码只有在(按照上面的逻辑)两个集合不相等时才会执行。 (!isEqualToSet)。
但是,如果otherSet的内容等于接收集的内容,则isEqualToSet仅返回YES,否则返回NO。
最后intersectSet
从接收集中删除不是另一个给定集的成员的每个对象。 - 产生交集。
这一点很重要。您希望从两组中获取常用值。而Intersect只会删除来自另一组而不是的值。
因此[set2 intersectSet:set1];
检查第1组中的哪些值也存在于第1组中。
因此,在调用[set2 intersectSet:set1];
之后,Set 2将包含两个集合之间共有的任何值。
确保使用的是NSNumber。