无法将“__NSCFData”类型的值 (0x39490110) 转换为 'NSString' (0x394990ac)
Could not cast value of type '__NSCFData' (0x39490110) to 'NSString' (0x394990ac)
在代码的以下部分使用 objectMapper 框架将 jsonstring
转换为 object
时发生崩溃,但我猜我实现的方式是正确的。
Could not cast value of type '__NSCFData' (0x39490110) to 'NSString' (0x394990ac)
代码如下:
static func saveUserRefererInfo(userRefInfo : UserRefererInfo?)
{
if userRefInfo != nil {
let jsonText = Mapper().toJSONString(userRefInfo!, prettyPrint: true)!
userDefaults.set(jsonText, forKey: SharedPreferenceHelper.USER_REFERER_INFO)
} else {
userDefaults.set(nil, forKey: SharedPreferenceHelper.USER_REFERER_INFO)
}
}
static func getUserRefererInfo() -> UserRefererInfo?
{
let userRefInfo = userDefaults.value(forKey: SharedPreferenceHelper.USER_REFERER_INFO)
if userRefInfo != nil {
return Mapper<UserRefererInfo>().map(JSONString: userRefInfo! as! String)
}
return nil
}
崩溃发生在这行代码中:
return Mapper<UserRefererInfo>().map(JSONString: userRefInfo! as! String)
错误很明显:userRefInfo
的类型是 (NS)Data
。
我不知道 userRefInfo
是如何进一步处理的,但这是从 UserDefaults
.
获取 Data
的常用方法
if let userRefInfo = userDefaults.data(forKey: SharedPreferenceHelper.USER_REFERER_INFO)
return Mapper<UserRefererInfo>().map(JSONString: userRefInfo)
}
从不 value(forKey:
和 从不 if foo != nil { ... foo! }
考虑到 ObjectMapper
在 Swift 4+
中取而代之的是 Codable
在代码的以下部分使用 objectMapper 框架将 jsonstring
转换为 object
时发生崩溃,但我猜我实现的方式是正确的。
Could not cast value of type '__NSCFData' (0x39490110) to 'NSString' (0x394990ac)
代码如下:
static func saveUserRefererInfo(userRefInfo : UserRefererInfo?)
{
if userRefInfo != nil {
let jsonText = Mapper().toJSONString(userRefInfo!, prettyPrint: true)!
userDefaults.set(jsonText, forKey: SharedPreferenceHelper.USER_REFERER_INFO)
} else {
userDefaults.set(nil, forKey: SharedPreferenceHelper.USER_REFERER_INFO)
}
}
static func getUserRefererInfo() -> UserRefererInfo?
{
let userRefInfo = userDefaults.value(forKey: SharedPreferenceHelper.USER_REFERER_INFO)
if userRefInfo != nil {
return Mapper<UserRefererInfo>().map(JSONString: userRefInfo! as! String)
}
return nil
}
崩溃发生在这行代码中:
return Mapper<UserRefererInfo>().map(JSONString: userRefInfo! as! String)
错误很明显:userRefInfo
的类型是 (NS)Data
。
我不知道 userRefInfo
是如何进一步处理的,但这是从 UserDefaults
.
Data
的常用方法
if let userRefInfo = userDefaults.data(forKey: SharedPreferenceHelper.USER_REFERER_INFO)
return Mapper<UserRefererInfo>().map(JSONString: userRefInfo)
}
从不 value(forKey:
和 从不 if foo != nil { ... foo! }
考虑到 ObjectMapper
在 Swift 4+
Codable