Ich bin neu in swift, ich versuche einen Alarm zu erstellen, bekomme aber einen Fehler. Kann ich NSUserDefaults wie im folgenden Code verwenden, und wie kann ich diesen Fehler beheben?Get error Konnte den Wert vom Typ 'NSTaggedPointerString' nicht in 'NSArray' umwandeln
Der Fehler, den ich bekommen ist:
Could not cast value of type 'NSTaggedPointerString' to 'NSArray'
und tritt in dieser Zeile:
let alarms = defaults.objectForKey("Alarms") as! [String]
Meine ganze Klasse:
class Alarm {
// MARK: - Declare 2 fields just time and switch in alarm
var time: String = ""
var stateSwitch: Bool = false
// MARK: - Initalize
init(time: String , turnOn: Bool) {
self.time = time
self.stateSwitch = turnOn
}
class func getAllAlarm() -> [Alarm] {
var alarms = [Alarm]()
let times = getAllTimes()
let stateSwitchs = getAllSwitchs()
for i in 0...times.count {
let alarm = Alarm(time: times[i], turnOn: stateSwitchs[i])
alarms.append(alarm)
}
return alarms
}
private class func getAllTimes() -> [String]{
let defaults = NSUserDefaults.standardUserDefaults()
let alarms = defaults.objectForKey("Alarms") as! [String]
return alarms
}
private class func getAllSwitchs() -> [Bool]{
let defaults = NSUserDefaults.standardUserDefaults()
let stateSwitchs = defaults.objectForKey("Switchs") as! [Bool]
return stateSwitchs
}
}
Es scheint, dass Sie zuvor ein String-Objekt in NSUserDefaults unter "Alarms" gespeichert haben, so dass Sie es nicht als [String] transformieren können. – Larme