这是我的Realm对象,基本上是附加了一些标记的图像。
class AllTags: Object {
dynamic var singleTag = ""}
class Photo: Object {
var myTags: [String] {
get {
return _backingNewTags.map { $0.singleTag }
}
set {
_backingNewTags.removeAll()
_backingNewTags.appendContentsOf(newValue.map({ AllTags(value: [$0]) }))
}
}
let _backingNewTags = List<AllTags>()
override static func ignoredProperties() -> [String] {
return ["myTags"]
}
dynamic var imagePath = ""}
我有我的collectionView,我可以看到我的所有照片,当按下图像时,我可以看到我的标签,所以一切正常。
我添加了我的UISearchBar,添加了txtSearchbar.delegate = self
并使用let data = realm.objects(AllTags).map { $0.singleTag }
我可以打印数据库中的所有标签。
我只需要在通过UISearchBar键入CollectionView单元格时实时过滤,因此它只显示标记有我正在键入的单词的图像。基本。
我一直在按照本教程来过滤collectionView - https://github.com/codepath/ios_guides/wiki/Search-Bar-Guide#example-searching-a-collection-view - 11个小时后,我无法弄清楚如何让它与Realm一起使用。使用硬编码数组,例如我可以使它工作。
答案 0 :(得分:0)
在境界中,您可以根据自己要查找的内容过滤Results<T>
。例如:
let data = realm.objects(AllTags).filter("singleTag CONTAINS %@", searchTerm)
但是,我想知道您为什么要将_backingNewTags
转换为数组[String]
?为什么你不能直接访问这些标签?这将是更多的记忆和CPU高效,并将简化您的代码...