Ios Get error无法强制转换类型为';NSTaggedPointerString';至';NSArray';
我是swift的新手,我正在尝试创建一个警报,但出现了一个错误。 我可以像下面的代码中那样使用NSUserDefaults吗?如何修复此错误 我得到的错误是: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:
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]。