ich meine Gewohnheit speichern Klasse:swift3: [String: ANYOBJECT] mit NSCoding Protokoll mit NSUserDefaults
private class PendingRequest : NSObject, NSCoding
{
var route : String!
var params: [String: AnyObject]!
init(route: String, params: [String: AnyObject])
{
self.route = route
self.params = params
}
required init(coder aDecoder: NSCoder)
{
self.route = aDecoder.decodeObject(forKey: "route") as! String
self.params = aDecoder.decodeObject(forKey: "params") as! [String: AnyObject]
}
public func encode(with coder: NSCoder)
{
coder.encode(route, forKey: "route")
coder.encode(params, forKey: "params")
}
}
Und hier ist, wie ich meine Liste der PendingRequest
sparen:
private static func savePendingRequests(requestsToSend: [PendingRequest])
{
let data = NSKeyedArchiver.archivedData(withRootObject: requestsToSend!)
UserDefaults.standard.set(data, forKey: self.requestsToSendDefaultsString)
}
Und hier ist, wie ich versuche, es zu erhalten:
Aber mein Code stürzt beim Abrufen meiner Daten ab ... Speichern funktioniert gut, aber nicht zurückholen ... Irgendeine Idee?
EDIT: Hier ist mein Crashlytics
Fehler:
*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (_TtCC6Versus9VersusAPIP33_8D2B8AA415FDC4F8DFAF29D7ECE33C1F14PendingRequest) for key (NS.objects); the class may be defined in source code or a library that is not linked
LÖSUNG:
Meine Klasse PendingRequest
war fileprivate
, so NSKeyedUnarchiver
konnte nicht darauf zugreifen, daher auch der Absturz .. . Danke für Ihre Hilfe.
Können Sie bitte hinzufügen Crash-Log bedeutet Fehler, der in Debug-Konsole gedruckt wird. –
Bedenke, dass 'AnyObject' in' Any' geändert wurde, als das Äquivalent zu 'ID' von Objective-C – vadian
@NiravD Das ist die Sache, ich habe nichts in der Konsole gedruckt ... – Dliix