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")

注意:这个例子没有提供任何纠错结构,只是为了演示这个概念。

10-06 02:55