Xcode 8.0测试版(8S128d)
iOS 10系统
我正在尝试从SKTileDefinition检索用户数据,但无法获取任何返回数据。
我可以用下面的代码检索这个名字-
if let tileType = landBackground.tileDefinition(atColumn: column, row: row) {
tileDef = tileType.name!
} else {
tileDef = "Nil"
}
但是当我试图用下面的代码检索用户数据时,我得到的结果是零-
if let tileType = landBackground.tileDefinition(atColumn: column, row: row) {
if let data = tileType.userData?.value(forKey: "data") {
tileDef = String(data)
} else {
tileDef = "no string data"
}
} else {
tileDef = "Nil"
}
我已经确认为我试图返回的磁贴设置了用户数据。
有没有人能让这个功能在Xcode 8.0中运行?
最佳答案
您需要确保初始化NSMutableDictionary并将其分配给userData属性,而不只是尝试直接将值分配给userData。
下面是一个例子:
将数据分配给字典,然后分配给磁贴定义。
let dict:NSMutableDictionary = ["data":"someData"]
let tileDef = tileMap.tileDefinition(atColumn: 0, row: 0)!
tileDef.userData = dict
要读取这些值,可以按如下方式直接调用。
let tileDef = tileMap.tileDefinition(atColumn: 0, row: 0)!
let data = tileDef.userData?.value(forKey: "data")
注意:这个例子没有提供任何纠错结构,只是为了演示这个概念。