- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何读取“magazin”的值?
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let action = response.actionIdentifier
let request = response.notification.request
let userInfo = request.content.userInfo
if action == "open.magazin" {
var str: String?
let magazin = userInfo["magazin"]
print("MAGAZYN : \(magazin)")
}
completionHandler()
}
函数返回值:
MAGAZYN : Optional({"pages":100,"size":"50 MB","productId":"com.sad","purchased":false,"coverImageURL":"","cat":3,"itemPrice":"4,99","fileURL":"","id":5,"title":"test","demoStartPage":0,"desc":""})
最佳答案
Swift 4 提供了非常强大的开箱即用的 JSON 解析。我最喜欢的博客是 Ultimate Guide to JSON Parsing with Swift 4 ,因为我做的不够频繁,而且它以一种简单的方式涵盖了许多“陷阱”。
所以,我拿了你的数据,把它扔到 Playground 上,然后用...
let userInfo: [AnyHashable: Any] = ["magazin": "{\"pages\":100,\"size\":\"50 MB\",\"productId\":\"com.sad\",\"purchased\":false,\"coverImageURL\":\"\",\"cat\":3,\"itemPrice\":\"4,99\",\"fileURL\":\"\",\"id\":5,\"title\":\"test\",\"demoStartPage\":0,\"desc\":\"\"}"]
struct Magazin: Codable {
let pages: Int
let size: String
let productId: String
let purchased: Bool
let coverImageURL: String
let cat: Int
let itemPrice: String
let fileURL: String
let id: Int
let title: String
let demoStartPage: Int
let desc: String
}
if let magazin = userInfo["magazin"] as? String {
let jsonData = magazin.data(using: .utf8)!
let decoder = JSONDecoder()
let mag = try! decoder.decode(Magazin.self, from: jsonData)
print(mag.pages)
print(mag.size)
print(mag.productId)
print(mag.purchased)
print(mag.coverImageURL)
print(mag.cat)
print(mag.itemPrice)
print(mag.fileURL)
print(mag.id)
print(mag.title)
print(mag.demoStartPage)
print(mag.desc)
}
即将输出
100
50 MB
com.sad
false
3
4,99
5
test
0
注意 我在上面的例子中使用了强制解包,我希望你清理它并适当使用 guard
和 do-catch
I can not cope with this message: "Can not convert value of type 'Any?' to expected argument type 'Data' "
所以,有两件事,userInfo
是一个 [AnyHasable: Any]
风格的字典,所以您需要做的第一件事就是将值转换为合适的类型,根据您的示例,这可能是一个 String
...
if let magazin = userInfo["magazin"] as? String {
//...
}
接下来,您需要将String
转换为Data
if let jsonData = magazin.data(using: .utf8) {
//...
}
关于swift - 如何从 userNotificationCenter 中读取内容 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50996376/
这是我的代码的一部分。我想使用 UNUserNotificationCenter 和 UNUserNotificationCenterDelegate 来处理通知事件。 当应用程序处于前台状态时,此代
这个错误刚刚开始弹出。是错误还是更新? Conflicting parameter types in implementation of 'userNotificationCenter:didRece
我正在尝试从 userNotificationCenter(_:didReceive:withCompletionHandler:) 中检索原始通知内容在 watchOS 中。从 APNS 发送推送通
我目前正在实现推送通知,我想知道 userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: 中的 com
如何读取“magazin”的值? func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response
当应用关闭且用户点击通知时: 1) 使用 remoteNotification 对象调用 didFinishLaunchingWithOptions。我按预期在此处设置了 rootViewContro
我已成功为我的消息传递应用程序设置了远程通知,并希望合并 iOS 的“快速回复”功能,现在更广为人知的是 UNUserNotificationCenter 的 UNTextInputNotificat
我正在尝试将时间值作为字符串接收,然后让通知使用该值作为触发器来显示。我的问题是通知采用这种格式来设置它的时间: var dateComponents = DateComponents()
我刚刚升级了为 iOS 10 注册的整个 iOS 推送通知,使用以下代码: -(void)registerForNotifications{ if(SYSTEM_VERSION_GRATERTHAN_
我想弄清楚我是否可以通过本地通知来实现我的目标,或者我是否需要切换到远程通知。 我正在通过构建一个闹钟程序来练习 iOS 10/Swift 3,该程序会在一天中的固定时间播放 RSS 更新的广播节目的
我有一个现有的项目,我们在其中使用 NSNotificationCenter 构建了它。现在,如果我想向我的应用程序添加丰富的通知,是否应该将所有 NSNotification 调用都替换为 NSUs
我是一名优秀的程序员,十分优秀!