我是Swift中的新人。我创建了一个节点swift文件来存储节点信息。而另一个组快速文件是存储所有节点的组。为什么致命错误:数组索引超出范围时显示在Swift中打印数组的时间?
的Node.swift
的代码是这样的:
class Node {
var id:UInt8=0
var type:Int=0
var name:String=""
var bdAddr:NSUUID!
//The node private packet counter
var nodePktNum:Int=0
}
的Group.swift
的代码是这样的:
class Group {
var mLedDevice:[LedDevice]? = [LedDevice]()
class LedDevice {
var node :Node?
var rssi :Int?
}
func allocateNode()
{
print("mLedDevice![0].node = \(mLedDevice![0].node))")
}
}
当我尝试调用函数(allocateNode
),并尝试通过print("mLedDevice![0].node = \(mLedDevice![0].node))")
打印mLedDevice![0].node)
它显示错误fatal error: Array index out of range
。
我是否缺少初始化var mLedDevice:[LedDevice]? = [LedDevice]()
的东西?
在此先感谢。
===================================编辑========== =======================
我想将项目添加到数组中,所以我创建了一个参数,如let let leddevice : LedDevice
,并尝试给它一些价值。并将leddevice添加到array mLedDevice
。但它显示constant 'leddevice' used before being initialized
。
如何给出let leddevice : LedDevice
的init值?
func allocateNode()
{
let leddevice : LedDevice
leddevice.node?.id = UInt8(0)
leddevice.node!.bdAddr = NodeUUID
mLedDevice?.append(leddevice)
}
您是否已将任何LedDevice对象添加到数组中。你创建了这个数组,但是在你尝试访问不存在的第一个元素(mLedDevice![0])后它是空的,这会产生错误 – Greg
你的数组是空的,'allocateNode()'应该先将节点添加到数组,然后打印 – Cristik
请阅读有关Swift语言指南中初始化的章节 – vadian