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

値を直接 userData に割り当てようとするのではなく、NSMutableDictionary を初期化して 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 に答える