1。单击该链接会导致数据库更新。
我可以访问某个链接(假设它是 www.google.com ),这样当我在浏览器中打开它时,它会更新我数据库中 JSON 代码的特定部分。它根据构成链接一部分的数字,调整数据中的某个值。
2。如何在我的 iOS 应用程序后台运行此链接?
我需要能够在应用程序中“打开”此链接,而无需实际打开 UIWebview 并直观地访问该站点。我只需要数据库中的这个 JSON 数据自行更新(用户甚至不知道它发生了)。
我在这里遇到的问题是我根本不知道这是如何完成的。 如何在不打开 Safari 浏览器的情况下访问此链接?
最佳答案
对于此类功能,我发现的最佳方法是将它们视为“AJAX”(或“REST”、“API”等)——虽然这些术语经常被使用(并且对于经验丰富的程序员而言立即给出某种想法),最终结果是他们从你的“发起者”那里获取信息并发送到“服务器”进行处理,然后“服务器”回复“响应”。一旦您在脑海中有了这个概念,这就变成了一项相当简单的事件。
(对于我们的示例,我将称之为“API”,因为它确实最适合{@Mortiz 建议}这个问题)
对于 Swift 3,有几种方法可以做到这一点,我将向您展示我发现并用于各种功能的两种方法:
调度队列
对于“我知道存在并且会连接可靠性的 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. } }
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/