2016-03-01 4 views
0

Я работаю над пошаговой игрой с Game Center. Я хочу отправить Array of Strings и Array of Ints в качестве matchData. Я знаю, как создать и другое, но я только знаю, как отправить один из них ...Отправить два массива струнных и инц как 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

Я знаю, как получить данные и преобразовать их обратно в исходный тип. Но я не знаю, как отправить оба массива ... –