У меня есть метод, который вызывается всякий раз, когда создается новый матч (он устанавливает игровые данные), и он работает хорошо, за исключением иногда (случайным образом) текущего участника становится nil после того, как я попытаюсь сэкономить данные.GKTurnBasedMatch currentParticipant становится nil после saveCurrrentTurn
Я поместил несколько контрольных точек, и, пока я пытаюсь сохранить исходные данные игры, currentParticipant
не ноль, но после сохранения, это иногда нильполугруппы:
func enterNewGame(_ match:GKTurnBasedMatch) {
self.match = match
var pArray = [Player]()
let mode: Game.Mode = .quick
self.game = Game(mode: mode, players: pArray)
if match.participants != nil {
for (index, player) in match.participants!.enumerated() {
//populate the pArray with Players, with corresponding initial data.
}
}
// More setup to the Game object here.
//At this point, match.currentParticipant is not nil
let data = NSKeyedArchiver.archivedData(withRootObject: game!)
match.saveCurrentTurn(withMatch: data, completionHandler: {error in
if error != nil {
print(error!.localizedDescription)
return
}
if self.segueToPick != "" {
//At this point, match.currentParticipant is sometimes nil
self.performSegue(withIdentifier: self.segueToPick, sender: self)
}
})
}
Любые идеи?
Спасибо. Я сделаю чек, и если он будет равен нулю, я сделаю, как вы предлагаете. – coopersita