I am using MultipeerConnectivity. I need to convert my [Move?] array to data when sharing between two devices.
first i create my moves
variable.
@Published var moves: [Move?] = Array(repeating: nil, count: 9)
here I am trying to convert [Moves?]
Array to Data but I am getting error here. Why ?
NSKeyedArchiver.archivedData
throws an error.
Error:
Thread 1: signal SIGABRT
NSForwarding: warning: object 0x6000029c64f0 of class 'MultipleTicTacToe.Move' does not implement methodSignatureForSelector: -- trouble ahead
Array to Data Function:
func sendMoves(moves: [Move?]) {
if session.connectedPeers.count > 0 {
do {
let encodedData = try NSKeyedArchiver.archivedData(withRootObject: moves, requiringSecureCoding: true)
try self.session.send(encodedData, toPeers: session.connectedPeers, with: .unreliable)
} catch let error {
print(error.localizedDescription)
}
}
}
My Model:
enum Player {
case player1
case player2
case ai
case none
}
class Move {
let player: Player
let boardIndex: Int
var indicator: UIBezierPath
init(player: Player, boardIndex: Int, indicator: UIBezierPath) {
self.player = player
self.boardIndex = boardIndex
self.indicator = indicator
}
}