Xcode 8.0无法从SKTileDefinition检索userData

时间:2016-06-26 13:34:49

标签: ios xcode swift xcode8

Xcode 8.0 beta(8S128d) iOS 10

我正在尝试从SKTileDefinition检索userData但无法获取任何返回数据。

我可以使用以下代码检索名称 -

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

我确认已为我要返回的图块设置了userData。

有没有人设法让这个功能在Xcode 8.0中运行?

1 个答案:

答案 0 :(得分: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")

注意:此示例不提供任何纠错结构,仅用于演示概念。