2016-03-01 59 views
0

我正在與Game Center進行基於回合的遊戲。我想發送一個字符串數組和一個Ints數組作爲matchData。我知道如何創建兩個,但我只知道如何發送其中之一......發送兩個字符串和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

最簡單的方法可能是在一本字典來包裝兩種,然後序列化詞典:

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 
} 
0

讓您的使用matchData一個GKTurnBasedMatch.loadMatchDataWithCompletionHandler:然後使用匹配數據(如果它存在於完成塊中)。

+0

我知道如何找回數據並將其轉換回原來的類型。但我不知道如何發送這兩個陣列... –

相關問題