将类对象附加到数组

时间:2015-01-01 03:53:59

标签: swift

我在这里遇到了语法问题。基本上我创建了一个简单的类,并希望将该类的对象添加到数组中。

class simpleClass {
    var aNum = Int()
    var aWord = String()
    init(thisNum:Int,thisString:String)
    {
        aNum = thisNum
        aWord = thisString
    }
}

var aObj:simpleClass
var aArray:Array<simpleClass>
aObj = simpleClass(thisNum:12,thisString:"Test")
aArray.append(aObj)

正如您所看到的,我创建了一个simpleClass对象,并尝试将其附加到simpleClass类型的数组中。但是,我收到错误说

在初始化之前通过引用传递

我想我必须在语法中遗漏一些东西。希望有人可以指出我的错误。

感谢, sweekim

3 个答案:

答案 0 :(得分:1)

您需要为数组变量分配一个数组。

var aArray:Array<simpleClass> = []

或者,如果您愿意,

var aArray = Array<simpleClass>()

甚至(我的偏好)

var aArray: [simpleClass] = []

或者

var aArray = [simpleClass]()

更好的是你甚至可以重新排序并做到这一点:

var aArray = [simpleClass(thisNum:12,thisString:"Test")]

而不是整个最后4行。

顺便说一句,你可能会发现最好像这样声明你的类:

class simpleClass {
    var aNum: Int
    var aWord: String
    init(thisNum:Int,thisString:String) {
        aNum = thisNum
        aWord = thisString
    }
}

这会键入aNumaWord,但不会为它们分配值,因为您可以在init方法中执行此操作。原因是,如果您忘记在init中分配值,编译器将警告您,而如果您默认它们,则不会。可以改为默认它们,但是不要将它们包含在init方法中 - 一个或另一个是最好的,两者都有点多余并且可能导致错误。

答案 1 :(得分:0)

更改此行:

var aArray:Array<simpleClass>

对此:

var aArray:Array<simpleClass> = []

您正在声明数组类型,但您忘记创建任何数组。如果您在错误消息中实际,它会准确地告诉您 - 您没有初始化变量。

答案 2 :(得分:0)

另外我认为你没有正确地声明你的simpleClass实例。我这样做是为了消除错误:

var aArray:Array<simpleClass> = []
let aObj:simpleClass = simpleClass(thisNum:12,thisString:"Test")
aArray.append(aObj)

注意创建simpleClass实例的方式。