简体   繁体   English

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

[英]Storing Push Notification Data into UserDefault iOS Swift

Working on push notification and want to store the data into UserDefault.处理推送通知并希望将数据存储到 UserDefault 中。 When I checking through break point it return nil I don't know why values are nil.See my code below thanks.当我检查断点时它返回 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)")
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM