2017-07-03 18 views
0

我目前正在为IOS创建一个框架。我的框架必须发送请求到我的服务器,解析响应,然后更新应用程序主页面的UITableView。 我已经创建了一个Singleton类“MyUpdater”,它有一个静态func“addRow” 在我的应用程序中,我有2个对象:tableView和我用于tableView的对象列表。 我希望(我的FrameWork)的“addRow”方法异步地将对象添加到应用程序的对象列表中。 所以我创建了以下方法:异步函数中的Swift(IOS)更新参数

public static func addRow(tableView: UITableView, list: inout Array<Product>){ 
var my_object = Object() 
list.insert(my_object, at: 1) 
tableView.beginUpdates() 
tableView.insertRows(at: [IndexPath(row: 1, section: 0)], with: .automatic) 
tableView.reloadData() 
tableView.enUpdates()} 

,我得到了以下错误:封逃逸只能捕捉INOUT。

我该如何异步更新从pod(框架)的应用程序列表? 谢谢。 亲切的问候

+0

不相关,但不要在'insertRows'之后调用'reloadData'。插入操作更新用户界面,你将不会得到动画。而'begin-/endUpdates'对单个插入/删除/移动操作没有影响。 – vadian

+0

好的,谢谢你 –

回答

0

为什么使用inout?我认为这在这里没有意义,因为inout不是通过参考。

你试过类似的东西吗?

public func addRow(tableView: UITableView, list: Array<Product>){ 
    Dispatch.main.async { 
     //update the list + tableview 
    } 
} 
+0

当然可以。但是,当我插入一个值到列表中,我得到一个错误:“不能对不可变值使用变异成员:”products“是一个”let“常量 –