Xcode 8.0 测试版 (8S128d) iOS 10
我正在尝试从 SKTileDefinition 检索用户数据,但无法获得任何返回数据。
我可以使用以下代码检索名称 -
if let tileType = landBackground.tileDefinition(atColumn: column, row: row) {
tileDef = tileType.name!
} else {
tileDef = "Nil"
}
但是当我尝试使用以下代码检索 userData 时,我得到了 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"
}
我已确认为我要返回的图 block 设置了 userData。
有没有人设法让这个功能在 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")
注意:此示例不提供任何纠错结构,仅用于演示概念。
关于ios - Xcode 8.0 无法从 SKTileDefinition 检索用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38039012/