将推送通知数据存储到UserDefault iOS Swift中



正在处理推送通知,并希望将数据存储到UserDefault中。当我通过断点检查它返回nil时,我不知道为什么值是nil。请看下面我的代码,谢谢。

struct PushInfo: Encodable {
var body: String
var title : String
var url: String
}

var pushInfo: PushInfo?
pushInfo?.body = data["body"] as? String ?? ""
pushInfo?.url = data["url"] as? String ?? ""
pushInfo?.title = data["title"] as? String ?? ""
UserDefaults.standard.setValue(pushInfo, forKeyPath: "PushInfo")
if let pushData = UserDefaults.standard.object(forKey: "PushInfo") as? PushInfo {
print(pushData.title)
}
struct PushInfo: Codable {
var body: String
var title : String
var url: String
}
// MARK: - Codable helper
extension Encodable {
func toString() -> String? {
if let config = try? JSONEncoder().encode(self) {
return String(data: config, encoding: .utf8)
}
return .none
}
}
extension Decodable {
static func map(JSONString: String) -> Self? {
try? JSONDecoder().decode(Self.self, from: JSONString.data(using: .utf8) ?? .init())
}
}

let pushInfo = PushInfo(body: "1", title: "2", url: "3")
UserDefaults.standard.set(pushInfo.toString(), forKey: "PushInfo")
if let str = UserDefaults.standard.string(forKey: PushInfo), let object = PushInfo.map(JSONString: str) {
print("here (object)")
}

最新更新