gpt4 book ai didi

ios - Swift iOS 最佳实践 REST 回调

转载 作者:可可西里 更新时间:2023-10-31 23:45:05 27 4
gpt4 key购买 nike

我的 Swift iOS 应用程序与 REST Web 服务通信以检索 JSON 数据。完成后,它将使用相应的 UITableViewController 刷新 UITableView。

为了保持整洁,我创建了一个新的 swift 文件并将请求代码放在那里。

接口(interface).swift

import Foundation
class WTInterface {

func login() -> Bool {
var token: String?
println("login. initializing request...")
var url = NSURL(string: "https://report.somewebservice/data.cgi")
var request = NSMutableURLRequest(URL: url!)
var session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"
var params = [:]

var requestBody = [
"method" : "login",
"params" : [
"customerId": "235879840188032",
"login": "foobar",
"pass": "somepassowrd",
"language": "en"
],
"version" : "1.1"
]
var err: NSError?
request.HTTPBody = NSJSONSeri...............

View Controller

import UIKit

class ViewController: UIViewController {


override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.


var wtinterface = WTInterface()


wtinterface.login()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}

问题是如何最好地刷新我的 UITableView,因为这是一个异步请求。我已经阅读了很多关于回调和关闭以及较旧的博客文章和答案,但我没有找到一个好的答案。 (主要是因为我认为这些策略现在已经过时了......)

任何人都可以指出正确的方向并粘贴一些示例代码吗?

最佳答案

可能对以后的人有用:

答案是使用闭包。请注意,@escaping 表示闭包正在转义,即它不会“直接运行”,而是可能会等待诸如网络请求之类的异步操作。请注意,当使用它们时,UI 不能在其中更新(因为它们不在平均线程上运行),而是为此在主线程上安排一些东西。

func myClosure(callback: @escaping (_ greeting: String?) -> Void) {
print("lalalala")
// Do async request stuff here
callback("Hi there!")
}

myClosure() { aGreeting in
guard aGreeting != nil else {
return
}
print(aGreeting!)
}

关于ios - Swift iOS 最佳实践 REST 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27741576/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com