发送两个字符串和Ints数组作为matchData

时间:2016-03-01 16:16:18

标签: ios swift game-center

我正在与Game Center合作开启回合制游戏。我想发送一个字符串数组和一个Ints数组作为matchData。我知道如何创建两者,但我只知道如何发送其中一个......

这是我创建字符串数组的方式:

var strings = [String]()  
let data = NSKeyedArchiver.archivedDataWithRootObject(strings)

这是我创建Int数组的方式:

var array : [Int] = []  
let data = NSData(bytes: array, length: array.count * sizeof(Int))

这就是我发送数据的方式

currentMatch?.endTurnWithNextParticipants([nextParticipant], turnTimeout: 20, matchData: data, completionHandler: { (error) in
                if error != nil {
                    print(error)

                } else {
                    //Data sent

                    }
                }
            })

2 个答案:

答案 0 :(得分:0)

使用GKTurnBasedMatch.loadMatchDataWithCompletionHandler:获取matchData,然后使用完成块中存在的匹配数据。

答案 1 :(得分:0)

最简单的方法可能是将两者都包装在字典中,然后序列化字典:

let data = NSKeyedArchiver.archivedDataWithRootObject([
    "strings":strings,
    "numbers":array
])

然后要恢复原始数据,您可以使用:

guard let recovered = NSKeyedUnarchiver.unarchiveObjectWithData(data) as? [String:AnyObject],
    let strings = recovered["strings"] as? [String],
    let array = recovered["numbers"] as? [Int] else {
        // recovery failed... deal with it
}