我是Swift的新手。我创建了一个节点swift 文件来存储节点信息。另一个组swift 文件是一个存储所有节点的组。
timeuuid
的代码如下所示:
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
mLedDevice![0].node)
时
显示错误print("mLedDevice![0].node = \(mLedDevice![0].node))")
。
我是否遗漏了初始化fatal error: Array index out of range
的内容?
提前致谢。
=================================== EDIT =========== ======================
我想将项目添加到数组中,因此我创建了一个像let var mLedDevice:[LedDevice]? = [LedDevice]()
这样的参数,并尝试给它一些值。并将leddevice添加到let leddevice : LedDevice
。但它显示 array mLedDevice
。
如何为constant 'leddevice' used before being initialized
提供初始值?
let leddevice : LedDevice
答案 0 :(得分:1)
我能想到的唯一一件事就是导致这个数组是空的,即你试图访问那个数组的索引0但是不存在。
尝试以下内容,它可以让您在看到数组内容后了解如何解决它:
print("mLedDevice = \(mLedDevice))")
换句话说,您正在实例化一个没有元素的数组。
答案 1 :(得分:1)
在您的代码行中
var mLedDevice:[LedDevice]? = [LedDevice]()
您只是初始化一个空数组。你之后尝试的是访问第一个元素,的空数组,它是超出界限的。
在打印声明之前,您需要向数组中添加项目
var ledDevice = LedDevice()
mLedDevice.append(ledDevice)
然后你的print语句不会给你任何错误。
更新:回答添加的问题
let leddevice : LedDevice
定义了LedDevice
类型的常量,但尚未初始化,然后在下一行代码中使用它。你应该用
let leddevice = LedDevice()
这也将初始化变量。
注意:如果您有任何其他问题,您应该为此写一个新问题 注2:您是否阅读了有关初始化的任何guides?