小编Tom*_*Tom的帖子

Swift 3.0 中的 WKWebView 委托 (decidePolicyFor) 问题

我目前正在我的应用程序中实现一个 WKWebView,我想使用decidePolicyFor 委托方法来决定我的应用程序如何响应外部链接。

    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {


    if navigationAction.navigationType == WKNavigationType.linkActivated && !(navigationAction.request.url?.host?.lowercased().hasPrefix("www.example.com"))! {
        UIApplication.shared.open(navigationAction.request.url!, options: [:], completionHandler:nil)
        decisionHandler(.allow)

    }
    else
    {
        decisionHandler(.cancel)
    }


}
Run Code Online (Sandbox Code Playgroud)

但是,编译器在 swift 3.0 中给了我以下问题:-

实例方法 'webView( :decidePolicyFor:decisionHandler:)' 几乎匹配协议 'WKNavigationDelegate' 的可选要求 'webView( :decidePolicyFor:decisionHandler:)'

有没有人知道这个问题的解决方案,更重要的是为什么会发生这种情况

提前致谢

swift wkwebview

3
推荐指数
1
解决办法
5241
查看次数

每 X 天的本地通知 - Swift

在我开始之前,请不要烧我,因为我知道这里已经被问了数百次,但没有可靠的答案,但我相信有一个使用后台刷新的解决方案。https://medisafe.com/ app 好像已经解决了!

目标:每x天在指定时间触发本地通知

我的解决方案

第 1 步:从开始日期和奇数发生(本例为 2)天(已编辑)开始获取计时器间隔

第 2 步:在此差异上设置间隔计时器并重复

第 3 步:激活后台刷新(如果应用程序甚至终止,它会在后台加载应用程序并给我一个小窗口来执行一些任务)

步骤 4. 设置后台刷新为每天触发一次

第 5 步:执行 get items api,它将刷新所有计时器和通知

第 6 步坐下来,对我的解决方案惊讶地微笑

但这失败了。

所以一个定时器间隔

 let newTrigger = UNTimeIntervalNotificationTrigger(timeInterval: 172800,repeats: true)
Run Code Online (Sandbox Code Playgroud)

但这只会在每天执行后台提取时重置计时器,并且将从现在而不是从开始日期触发 2 天。

因此,必须有一种比较日期小时和分钟(开始日期、x 日期和当前日期)的方法来计算计时器间隔值。

目前我正在使用日历组件。触发每天我做以下事情

      var triggerType : DateComponents? {
    var triggerT : DateComponents?
    var cal = Calendar(identifier: .gregorian)
    cal.firstWeekday = 2
    if let notificationModel = self.notificationModel {
        switch notificationModel.reminderType {
        case .daily?, .weekly?:
            if let date = notificationModel.date {
                triggerT = cal.dateComponents([.weekday, …
Run Code Online (Sandbox Code Playgroud)

nsnotificationcenter swift

2
推荐指数
2
解决办法
4066
查看次数

Alamofire 5 转义正斜杠

在过去的几天里,我一直在谷歌搜索并尝试关于 alamofire 的正斜杠的自动转义。

(其中“/path/image.png”变成 "\/path\/image.png")

但是,如果您使用 swiftyJson、通过 httpBody 发送或使用 Alamofire 参数类,那么所有答案都指向解决方案。

https://github.com/SwiftyJSON/SwiftyJSON/issues/440

我没有使用 SwiftyJson 并且觉得安装 API 只是为了解决这个问题是一个用大锤敲钉子的情况。

反正。

我的问题是每当我尝试向 API 发送参数时,Alamofire 的 JSONEncoding.default 都会转义正斜杠。我不希望 Alamofire 这样做。

在我的情况下,我想发送以下参数并让 Alamofire 忽略正斜杠

let parameter : Parameters =  ["transaction": "/room/120"] 

Alamofire.request(endPoint , method: .post, parameters: parameter ,encoding: JSONEncoding.default , headers: header).validate(statusCode: 200..<300).responseObject { (response: DataResponse<SomeModel>) in
Run Code Online (Sandbox Code Playgroud)

}

也许创建一个自定义的 json 编码器是这样做的方法,但我发现关于如何最好地去做的文档很少。

我也试过

let parameter : [String : Any] =  ["transaction": "/room/120"] 

Alamofire.request(endPoint , method: .post, parameters: parameter ,encoding: JSONEncoding.default , headers: header).validate(statusCode: 200..<300).responseObject { (response: …
Run Code Online (Sandbox Code Playgroud)

swift alamofire

1
推荐指数
1
解决办法
1727
查看次数