Je ne peux pas comprendre pourquoi le code ci-dessous ne fonctionne pas:vecteur magasin à NSData à Swift
import Foundation
import SpriteKit
var TestVector: CGVector = CGVector(dx: 1, dy: 1)
var Data: Dictionary<String, Any> = ["abc":CGPoint(x: 0, y: 0), "def":1, "ghi":"Try", "jkl":TestVector]
let DataConverted: Data = NSKeyedArchiver.archivedData(withRootObject: Data)
let DataReceived: Dictionary = (NSKeyedUnarchiver.unarchiveObject(with: DataConverted) as! [String : Any])
Erreur lance est: Erreur: exécution a été interrompue, la raison: le signal SIGABRT. Le processus a été laissé à l'endroit où il a été interrompu, utilisez "thread return -x" pour revenir à l'état avant l'évaluation de l'expression.
Tout fonctionne très bien pour beaucoup de différents types de données (String, Int, Double, ...), mais il ne fonctionne pas pour les vecteurs
limitations sont là dans le type de données qui peuvent être archivés via NSKeyedArchiver?
Thx
J.
Informations complémentaires: ce doit être utilisé dans un transfert de données MultipeerConnectivy
'CGPoint' ne doit pas par défaut ne peut pas être converti en tant que tels dans' (NS) Data', donc il ne peut pas être archivé. Idem pour 'TestVector'. Vous devez le conformer au protocole 'NSCoder'. – Larme
Thx. Il travaille cependant pour CGPoint. Seul le type CGVector renvoie une erreur. Seriez-vous capable de dire comment conformer CGPoint et CGVector au protocole NSCoder et quelle serait la meilleure syntaxe? – jbegood
@Larme Vous voulez dire 'NSCoding' –