如何在swift中引用数组

如何在swift中引用数组,swift,Swift,我想有一个更好的编码数组的参考,但我不知道怎么做。下面的代码应该说明我的意思: 我有一个类,包含一个对象数组,如下所示: class Group: NSObject { var alGroup = [[NSObject]](); } 我有以下两个不同的代码,我更喜欢使用第一个 代码1,不适用于对内部数组的引用。如果不工作,则表示对象丢失(没有语法或运行时错误): 代码2,有效,但不是首选: func addObjectto_new_Group(o:NSObject, inout gro

我想有一个更好的编码数组的参考,但我不知道怎么做。下面的代码应该说明我的意思:

我有一个类,包含一个对象数组,如下所示:

class Group: NSObject {
    var alGroup = [[NSObject]]();
}
我有以下两个不同的代码,我更喜欢使用第一个

代码1,不适用于对内部数组的引用。如果不工作,则表示对象丢失(没有语法或运行时错误):

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

当您创建“alias”变量
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”版本,并使用一个新函数执行相同的操作,但通过引用将数组传递到函数中。这是合法的,而且确实有效。它只是一个函数中的引用,不能像你所希望的那样工作。

只需执行group.alGroup,而不是为它创建一个新的变量?如果它是一个类,你不需要输入,除非你想使它成为一个新的实例。但是我写了我确实更喜欢代码1,如果可能的话,你建议执行代码2?代码1将不起作用,除非您在末尾do group.alGroup=alGroup
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)