将我的项目从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)
}
答案 0 :(得分:4)
filter
,map
等对Results
返回的objects
进行了延迟操作。这是以LazyFilterBidirectionalCollection<T>
等类型实现的。要实际执行过滤并获取结果数组,您需要通过包装在Array初始值设定项中将此集合提升为数组(例如Array(bgRealm.objects...))
查询返回一个Results实例,其中包含一个 对象。结果的界面与Array和对象非常相似 可以使用索引下标来访问结果中包含的内容。 与Arrays不同,Results只保存单个子类类型的Object。 所有查询(包括查询和属性访问)在Realm中都是惰性的。 只有在访问属性时才会读取数据。