如何在swift中引用数组

时间:2015-03-07 11:07:49

标签: swift

我想引用一个数组以获得更好的编码,但我不知道怎么做。以下代码应说明我的意思:

我有一个类,其中包含一个数组数组,如下所示:

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中引用数组?

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'版本,以及执行相同操作的新函数,但通过引用将数组传递给函数。这是合法的,并且确实有效。它只是在函数中的引用,它不能按你的意愿工作。