我想引用一个数组以获得更好的编码,但我不知道怎么做。以下代码应说明我的意思:
我有一个类,其中包含一个数组数组,如下所示:
class Group: NSObject {
var alGroup = [[NSObject]]();
}
我有以下2个不同的代码,我希望使用第一个代码。
代码1,它不适用于对内部数组的引用。如果不工作,我的意思是对象丢失(没有语法或运行时错误):
func addObjectto_new_Group(o:NSObject, inout group:Group){
var alGroup = group.alGroup;
var alNew = [NSObject]();
alNew.append(o);
//group.alGroup.append(alNew);
alGroup.append(alNew);
}
代码2,有效,但不是首选:
func addObjectto_new_Group(o:NSObject, inout group:Group){
//var alGroup = group.alGroup;
var alNew = [NSObject]();
alNew.append(o);
group.alGroup.append(alNew);
//alGroup.append(alNew);
}
如何在代码1中引用数组?
答案 0 :(得分:0)
当您创建别名'变量var alGroup = group.alGroup
您不是通过引用复制,而是按照问题的注释中所解释的值复制。因此,解决此问题的一种方法是使用group.alGroup.append(alNew)
中的全名。
然而,还有另一种选择可能是您喜欢的:
func addObjectToNewAlGroup(o:NSObject, inout alGroup : [[NSObject]])
{
var alNew = [NSObject]()
alNew.append(o)
alGroup.append(alNew)
}
var aGroup = Group()
addObjectto_new_Group("a1", &aGroup)
addObjectto_new_Group("b2", &aGroup)
addObjectToNewAlGroup("c3", &aGroup.alGroup)
这会使用您的代码2'版本,以及执行相同操作的新函数,但通过引用将数组传递给函数。这是合法的,并且确实有效。它只是在函数中的引用,它不能按你的意愿工作。