从功能访问插座

时间:2015-01-12 21:55:22

标签: ios swift

我刚开始学习Swift。我创建了一个管理REST API调用的类,该方法接受3个参数,data,successCallback和failCallback。

一切都很好,我得到了数据,我解析了JSON等等。

我的问题是我无法在传递给API方法的successCallback中执行与IBOutlet相关的任何事情。我试过self.textfield.text,textfield.text,没什么用。没错,没什么。

 func naturalSearch(data : String, callback:(NSDictionary) -> (), fail :(String) -> ()) {

    request(getLink("v2/natural"), data : data, callback : callback, fail : fail)
}

这是API方法。

service.naturalSearch(SearchTextfield.text, callback: processResponse, fail: responseFail)

这就是我调用方法的方法。内部processResponse没有任何与网点相关的工作。我有3个,2个文本域和一个tableview。我试图隐藏/更改标签/等但没有任何作用。

谢谢你, 米哈伊

2 个答案:

答案 0 :(得分:1)

那是因为你正在使用一个回调函数,它在UI线程之外执行。 您应该使用dispatch_async包装UI更改代码。

例如:

dispatch_async(dispatch_get_main_queue(), {
    self.labelOutlet.text = "Text"
})

答案 1 :(得分:0)

您只能在主线程中修改UI元素。要访问它,请使用:

dispatch_async(dispatch_get_main_queue()) { /* your Code */ }