我正在与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
}
}
})
答案 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
}