ios - Xcode 8.0 无法从 SKTileDefinition 检索用户数据

标签 ios xcode swift xcode8

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/

相关文章:

swift - 在 Swift 中检查对象是否为给定类型

ios - 在 Swift 中使用 NSFileManager 删除文件时无法获得完成结果

IOS - 安装企业配置文件或企业签名的应用程序需要回调到 Apple?

ios - UISearchDisplayController 没有调光?

ios - Swift 中的简单 TableView 出现问题,错误 SIGNAL SIGART

iphone - 翻页动画到多个作业

iOS - 更改 REALM 对象属性时应用程序崩溃

ios - 从起始值到结束值绘制直线 ARKit

objective-c - Xcode 不会创建 iOS .app 发布文件(产品)。如何解决这个问题?

iphone - XCode 找不到基础 SDK