Isu*_*uru 4 arrays realm ios swift swift2
我有一个叫做的课Option.这是一个Realm对象,因此它是Realm自己的基类的子类Object.
在视图控制器中,我有一个包含一堆Option对象的数组属性.
private var options = [Option]()
Run Code Online (Sandbox Code Playgroud)
在视图控制器中的方法中,我需要检查Option上述选项数组中是否包含某个对象.
以前(Swift 1.2),我有这样的检查逻辑.
func itemSelected(selection: Object) {
let option = selection as! Option
if !contains(options, option) {
// act accordingly
}
}
Run Code Online (Sandbox Code Playgroud)
现在我将项目转换为Swift 2(我已经将Realm的版本更新为Swift 2版本).我将代码更新为此.
func itemSelected(selection: Object) {
let option = selection as! Option
if !options.contains(option) {
// act accordingly
}
}
Run Code Online (Sandbox Code Playgroud)
但是现在我得到以下编译错误!
无法将'Option'类型的值转换为预期的参数类型'@noescape(Option)throws - > Bool'
我无法弄清楚为什么.有任何想法吗?
这是因为contains函数现在需要闭包而不是所有非等同类型的元素.您需要做的就是将其更改为以下内容
if !(options.contains{$0==option}) {
// act accordingly
}
Run Code Online (Sandbox Code Playgroud)
它的作用是将闭包传递给函数,只有当闭包满足其任何元素时才返回true.$0表示contains函数正在测试的数组中的当前元素,如果该元素等于您要查找的元素,则返回true.
| 归档时间: |
|
| 查看次数: |
3190 次 |
| 最近记录: |