LazyFilterBidirectionalCollection <结果<数据类型>&GT;&#39;预期参数类型&#39; [数据类型]&#39;

时间:2017-07-13 14:28:26

标签: iphone swift3 realm swift2.3

将我的项目从swift 2.3转换为swift 3后,我在Realm Filter中遇到此错误我无法在数组中获得过滤结果:

func filterUsers(_ searchText: String, completion: (([Lawyer]) -> Void)) {

        let bgRealm = try! Realm()            // Filter the whole list of users



let results = bgRealm.objects(Lawyer.self).filter { (cc) -> Bool in
    cc.name.contains2(searchText) ||
        cc.name.contains2(searchText) ||
        cc.phoneNumber2.contains2(searchText)

}
    print(results)


    completion(results)

}

1 个答案:

答案 0 :(得分:4)

filtermap等对Results返回的objects进行了延迟操作。这是以LazyFilterBidirectionalCollection<T>等类型实现的。要实际执行过滤并获取结果数组,您需要通过包装在Array初始值设定项中将此集合提升为数组(例如Array(bgRealm.objects...))

From the docs:

  

查询返回一个Results实例,其中包含一个   对象。结果的界面与Array和对象非常相似   可以使用索引下标来访问结果中包含的内容。   与Arrays不同,Results只保存单个子类类型的Object。   所有查询(包括查询和属性访问)在Realm中都是惰性的。   只有在访问属性时才会读取数据。