0
Ich versuche, unter Daten unter UserDefaults
speichern, aber wenn ich isDefault
bool übergeben, funktioniert es nicht. Aber wenn ich isDefault
entferne, funktioniert es gut.UserDefaults Bool FAIL
https://gist.github.com/n1tesh/4de0fea9514e392e35e241786f51e98b
struct User {
var userContact = CNContact()
var recipientContact: CNContact?
var isDefault: Bool = false
init(userContact: CNContact, recipientContact: CNContact? = nil, isDefault: Bool) {
self.userContact = userContact
self.recipientContact = recipientContact
self.isDefault = isDefault
}
}
extension User {
@objc(_TtCV6testUD4User6Coding)class Coding: NSObject, NSCoding {
let model: User?
init(model: User) {
self.model = model
super.init()
}
func encode(with aCoder: NSCoder) {
guard let model = self.model else {
return
}
aCoder.encode(model.userContact, forKey: "userContact")
aCoder.encode(model.recipientContact, forKey: "recipientContact")
aCoder.encode(model.isDefault, forKey: "isDefault")
}
required init?(coder aDecoder: NSCoder) {
guard let userContact = aDecoder.decodeObject(forKey: "userContact") as? CNContact,let isDefault = aDecoder.decodeObject(forKey: "isDefault") as? Bool else {
return nil
}
let recipientContact = aDecoder.decodeObject(forKey: "recipientContact") as? CNContact
model = User(userContact: userContact, recipientContact: recipientContact, isDefault: isDefault)
super.init()
}
}
}
Sie können nicht kodieren für ein 'Bool' mit' NSCoder', es ist nicht ein Objective-C-Typ. Ich schlage vor, dass Sie diesen Ansatz verwerfen und nur "Codable" in Swift 4 verwenden. –
Definieren Sie "funktioniert nicht". Das ist nicht hilfreich. Wie genau funktioniert es nicht? – rmaddy
@JonShier Ich möchte, dass es auch auf iOS 10 unterstützt. – Nitesh