显然Xcode不允许我从后台线程修改UI(iOS)。我必须输入:
let res = somethingReturningaString()
dispatch_async(dispatch_get_main_queue(), {
self.txtError.text = res!
})
我的想法是:'嘿,让我们简化生活并定义一个自定义操作符,这样我就可以键入:'
prefix operator ~> {}
prefix func ~> (closure: ()-> ()) {
dispatch_async(dispatch_get_main_queue(), closure)
}
//usage example
~> {self.txtError.text = res!}
显然是类型'()'的运营商不能应用于'() - >()' 有没有人知道如何宣布这项工作?
答案 0 :(得分:1)
swift编译器在那里有点困惑。你不能将一元运算符与其操作数分开,这意味着中间不能有空格。
考虑以下示例代码
let k = 12
~> {
self.txtError.text = res!
}
Swift现在希望~>
是一个二进制操作数,因为有一个空格。
二元运算符'〜>'不能应用于' Int'类型的操作数和'() - > ()'
如果您在第一行之后插入;
:
let k = 12;
~> {
self.txtError.text = res!
}
你会收到一些更有帮助的东西:
一元运算符不能与其操作数
分开
这意味着实际上必须没有空格。
删除空格:
~>{ self.txtError.text = res! }