1

Xcode 8.0 测试版 (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 中工作?

4

1 回答 1

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

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

于 2018-02-13T06:43:37.667 回答