我有一个NSArray类型的数组(arrayA),其中包含自定义对象,NSMutableSet(setA)也具有相同类的自定义对象。我希望合并这两个中的内容以避免重复值,所以我使用[setA addObjectsFromArray:arrayA]
然后我打印setA。
我有一个场景,其中setA将为nil,arrayA将包含一些内容。我的理解是即使setA为nil,[setA addObjectsFromArray:arrayA]
也会在SetA中添加arrayA的内容,但是当我打印setA时,我得到的是n而不是setA中的对象。
这是如何" addObjectsFromArray"工作到底?或者我在这里遗失了什么? Apple文档并没有让我对该集合的零部分有很多了解。
答案 0 :(得分:0)
如果一个对象是nil
并且您在其上调用了一个方法,那么它也将返回nil。添加setA
的检查为零,将其设置为新的NSMutableSet
。
请记住,[nil method]
始终执行noop。如果您id retVal = [nil methodThatReturnsObjParam]
,retVal
将始终为零。如果您int iVal = [nil methodThatReturnsint]
,iVal
将为0.依此类推。
答案 1 :(得分:0)
如果setA为nil,则将任何消息发送到setA完全没有 no 效果。没有设置,所以你不能添加东西。您必须手动创建NSMutableSet *并添加到它。
答案 2 :(得分:0)
解决方案很简单 - 检查setA
是否为nil
,如果是,请创建可变集:
if (!setA) {
setA = [NSMutableSet set];
}
[setA addObjectsFromArray:arrayA];
在nil
指针上调用任何方法只会返回nil
。