ios - Swift 3 和 JSON——通过在后台运行 URL 来更新数据库

标签 ios json database swift3 background

1。单击该链接会导致数据库更新。

我可以访问某个链接(假设它是 www.google.com ),这样当我在浏览器中打开它时,它会更新我数据库中 JSON 代码的特定部分。它根据构成链接一部分的数字,调整数据中的某个值。


2。如何在我的 iOS 应用程序后台运行此链接?

我需要能够在应用程序中“打开”此链接,而无需实际打开 UIWebview 并直观地访问该站点。我只需要数据库中的这个 JSON 数据自行更新(用户甚至不知道它发生了)。

我在这里遇到的问题是我根本不知道这是如何完成的。 如何在不打开 Safari 浏览器的情况下访问此链接?

最佳答案

对于此类功能,我发现的最佳方法是将它们视为“AJAX”(或“REST”、“API”等)——虽然这些术语经常被使用(并且对于经验丰富的程序员而言立即给出某种想法),最终结果是他们从你的“发起者”那里获取信息并发送到“服务器”进行处理,然后“服务器”回复“响应”。一旦您在脑海中有了这个概念,这就变成了一项相当简单的事件。

(对于我们的示例,我将称之为“API”,因为它确实最适合{@Mortiz 建议}这个问题)

对于 Swift 3,有几种方法可以做到这一点,我将向您展示我发现并用于各种功能的两种方法:

  1. 调度队列

    对于“我知道存在并且会连接可靠性的 url 的一次性拍摄”,这是一个很好的使用(如果你愿意,可以把它想象成一个“quick-n-dirty”...... !)

               DispatchQueue.global().async {
                    let data = try? Data(contentsOf: theURL!) //make sure your url does exist, otherwise unwrap in a if let check / try-catch
                    DispatchQueue.main.async {
                        // do stuff here with the data if you need
                        // you can get the response from the server and parse it out, set buttons in the app, etc.
                    }
                }
    
  2. Alamofire

    对于 Swift 3,Alamofire非常受欢迎,并且做了很多很棒的事情。如果您还没有,请检查一下!

    Alamofire.request("\(theURL!)").responseJSON { response in
    print("result is ", response.result)
    switch response.result {
    case .success(let value):
        // do stuff with the returned data
        // like updating your internal database, etc.
        print(value)
    case .failure(let error):
        print("There was an error")
        // you can see the error response in various ways....
        print(requested)
        print(error)
        print(response)
        print(response.result)
    }
    

一旦你的按钮就位(根据你的描述,这听起来像是你的#1 是关于什么的),然后在你点击它时调用的函数中,从上面拖入代码并“做事”你需要。

这将在后台自动更新服务器(回答您的#2)——用户不会注意到任何东西,除非存在与互联网的连接问题等(虽然太复杂了,无法进入这里)如果您希望拥有很多,Alamofire 是一个不错的选择,因为它会自动重试等(您应该查看的重要功能的一部分)

其中的一个关键部分是您可以从 URL 获取响应(从服务器发回各种 JSON 数据,然后在手机中将其分解)并对其进行“任何”操作。

一些你可以做的事情(希望能给你更多的想法——这几乎是任何事情......):

  • 更新应用中的数据(本地存储、局部变量等)
  • 更新按钮或标签内的文本(颜色、背景)
  • 处理给用户的警报(不是你的情况,但有时你想让他们知道发生了什么——当然是在更新服务器时出错)
  • 更改图像(各种)
  • 切换 View

好吧,这个列表和“您可以在应用程序中执行的操作”一样长,因此请自行决定您需要修改/更新的内容 - 这就是实现它的“方式”!

关于ios - Swift 3 和 JSON——通过在后台运行 URL 来更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43686252/

相关文章:

java - 创建 JSONObject 时如何避免在字符串值周围加上引号

php - 显示来自 MySQL 的特定 PHP 数组

mysql - 如何在 mac os Sierra 中将 mysql 表转储到 csv 文件中?

ios - 如何在 Realm 中创建 NSData 对象的可选列表(数组)?

php - 表 MYSQL (PhpMyadmin) 中的内连接最大值?

javascript - Cordova InAppBrowserexecuteScript() 未在 iOS 中触发回调

ios - 应用程序在访问类中的第一个静态变量时崩溃

ios - 处理中文等语言的名称顺序

php - 是什么导致 Safari 无法在此代码中获取 navigator.geolocation.getCurrentPosition ?

python - 从目录中提取所有音频文件,并将它们放到一个新文件中。 python