【发布时间】:2016-04-19 12:12:13
【问题描述】:
我是 Swift 的新手。我创建了一个 node swift 文件来存储节点信息。而另一个 group 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 的初始值?
func allocateNode()
{
let leddevice : LedDevice
leddevice.node?.id = UInt8(0)
leddevice.node!.bdAddr = NodeUUID
mLedDevice?.append(leddevice)
}
【问题讨论】:
-
您是否将任何 LedDevice 对象添加到数组中。您创建了数组,但之后它是空的,然后您尝试访问不存在的第一个元素(mLedDevice![0]),这会产生错误
-
你的数组是空的,
allocateNode()应该先将节点添加到数组中,然后打印出来 -
请阅读 Swift 语言指南中关于初始化的章节
标签: swift