我在这里遇到了语法问题。基本上我创建了一个简单的类,并希望将该类的对象添加到数组中。
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
答案 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
}
}
这会键入aNum
和aWord
,但不会为它们分配值,因为您可以在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实例的方式。