发送两个字符串和整数数组作为 matchData
Send two Arrays of Strings and Ints as matchData
我正在使用 Game Center 开发一款回合制游戏。我想发送一个字符串数组和一个整数数组作为 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
}
}
})
使用 GKTurnBasedMatch.loadMatchDataWithCompletionHandler:
获取匹配数据,然后使用该匹配数据(如果它存在于完成块中)。
最简单的方法可能是将两者都包装在字典中,然后序列化字典:
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
}
我正在使用 Game Center 开发一款回合制游戏。我想发送一个字符串数组和一个整数数组作为 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
}
}
})
使用 GKTurnBasedMatch.loadMatchDataWithCompletionHandler:
获取匹配数据,然后使用该匹配数据(如果它存在于完成块中)。
最简单的方法可能是将两者都包装在字典中,然后序列化字典:
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
}