Swift - 在UICollectionView中通过UISearchBar过滤Realm对象

时间:2015-11-13 18:09:38

标签: ios swift uicollectionview uisearchbar realm

这是我的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一起使用。使用硬编码数组,例如我可以使它工作。

1 个答案:

答案 0 :(得分:0)

在境界中,您可以根据自己要查找的内容过滤Results<T>。例如:

let data = realm.objects(AllTags).filter("singleTag CONTAINS %@", searchTerm)

但是,我想知道您为什么要将_backingNewTags转换为数组[String]?为什么你不能直接访问这些标签?这将是更多的记忆和CPU高效,并将简化您的代码...