Ios Get error无法强制转换类型为';NSTaggedPointerString';至';NSArray';

Ios Get error无法强制转换类型为';NSTaggedPointerString';至';NSArray';,ios,swift,Ios,Swift,我是swift的新手,我正在尝试创建一个警报,但出现了一个错误。 我可以像下面的代码中那样使用NSUserDefaults吗?如何修复此错误 我得到的错误是: Could not cast value of type 'NSTaggedPointerString' to 'NSArray' 发生在这行: let alarms = defaults.objectForKey("Alarms") as! [String] 我的全班同学: class Alarm { // MARK:

我是swift的新手,我正在尝试创建一个警报,但出现了一个错误。 我可以像下面的代码中那样使用NSUserDefaults吗?如何修复此错误

我得到的错误是:

Could not cast value of type 'NSTaggedPointerString'  to 'NSArray'
发生在这行:

let alarms = defaults.objectForKey("Alarms") as! [String]
我的全班同学:

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
    }

}

正确使用
NSUserdefaults
获取对象。问题可能是在哪里设置数据

as! [String]
在函数
getAllTimes
中,执行强制转换,它将得到的任何对象转换为
字符串
数组。如果无法强制转换该对象(因为插入了其他类型),则此操作将失败

也就是说,如果您将字符串数组保存到
NSUserdefaults
,这将成功


为确保显示保存到NSUserDefaults的代码。

您之前似乎在“Alarms”键处将字符串对象保存到NSUserDefaults中,因此无法将其转换为[String]。