import UIKit
class Foo: NSObject, NSCoding {
var cx: [Character : Int]
init(cx: [Character : Int]) {
self.cx = cx
}
// MARK: - <NSCoding>
required convenience init(coder aDecoder: NSCoder) {
let cx = aDecoder.decodeObject(forKey: "cxKey") as! [Character : Int]
self.init(cx: cx)
}
func encode(with aCoder: NSCoder) {
aCoder.encode(cx, forKey: "cxKey")
}
}
가 호출 : 인해 캐치되지 않는 예외 'NSInvalidArgumentException', 이유에 *** 응용 프로그램을 종료 :Swift 3에서 NSCoder를 사용하여 [Character : Int] 속성을 어떻게 인코딩합니까?
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var foo = Foo(cx: ["C": 5, "X": 6])
let encodedData = NSKeyedArchiver.archivedData(withRootObject: foo)
print("encodedData: \(encodedData))")
if let foo1 = NSKeyedUnarchiver.unarchiveObject(with: encodedData) as? Foo {
print("cx = ", foo1.cx)
} else{
print("There is an issue")
}
}
}
엑스 코드에서 오류가 발생합니다 '- [_ SwiftValue encodeWithCoder는 :] : 인식 할 수없는 선택기 인스턴스에 전송
어떻게 부르십니까? – Rikh
죄송합니다. 답변을 주셔서 감사합니다. – Max