如何使用 Siesta Swift 使另一个 ViewController 的 post 请求返回的响应对象附加到 TableViewController

Posted

技术标签:

【中文标题】如何使用 Siesta Swift 使另一个 ViewController 的 post 请求返回的响应对象附加到 TableViewController【英文标题】:How to make the response object that another ViewController's post request returns append to a TableViewController with Siesta Swift 【发布时间】:2018-11-14 00:36:15 【问题描述】:

我是 Swift 初学者,非常抱歉。对于 Siesta,我想在 ViewController 中发出一个发布请求,然后将请求返回的 Entry 对象添加到 TableViewController。在我的视图控制器中:

EntryAPI.sharedInstance.addEntry()

API 代码:

 func addEntry()  -> Request 
        return newEntry().request(.post, json:["foo": "bar"])
    

func newEntry() -> Resource 
        return service
            .resource("/entry")
    

在 post 请求之后,ViewController 对 TableViewController 执行 unwind segue,当然是在 post 请求完成之前。我不确定我会在代码中的哪个位置获取响应并调用 TableViewController 中的一个函数,该函数将新的 Entry 对象附加到条目列表中。

我不确定是否应该使用onSuccess() 将新的Entry 对象从addEntry() 函数传递给TableViewController,或者TableViewController 是否可以拥有newEntry() 资源并知道发布请求何时完成。我也不确定我是否以正确的方式处理这件事。提前致谢。

【问题讨论】:

为您的请求添加一个观察者 (bustoutsolutions.github.io/siesta/guide/observers) 并在它完成时更新您的 tableview 中的数据。 谢谢。所以澄清一下,我是将 TableViewController 添加为观察者还是 ViewController?如果是 ViewController,如果 segue 在完成之前发生,我如何将新的 Entry 对象发送到 TableViewController? 观察您在 Siesta 中对某些外部 API 的发布请求。 【参考方案1】:

我可以将newEntry() 资源添加到 TableViewController 并更改 API 方法:

func addEntry()  -> Request 
        let resource = newEntry()
        return resource.load(using: resource.request(.post, json:
            ["foo": "bar"]).onSuccess _ in)
    

现在resourceChanged 函数将在我可以处理响应对象的地方被调用。答案在文档中。

【讨论】:

以上是关于如何使用 Siesta Swift 使另一个 ViewController 的 post 请求返回的响应对象附加到 TableViewController的主要内容,如果未能解决你的问题,请参考以下文章

Siesta 作为 SwiftPM 在 Linux 上的依赖项

在 Siesta 中覆盖本地数据?

如何使用hover点击一个元素使另一个颜色变色

如何使用hover点击一个元素使另一个颜色变色

Siesta 加载在陈旧资源上失败

从基于 Siesta 实体的 JSON 初始化领域对象失败