我是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