2015-11-13 63 views
0

这是我的Realm对象,基本上是一个带有一些标签的图像。Swift - 通过UICollectionView中的UISearchBar过滤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

在Realm中,您可以根据要查找的内容筛选Results<T>。例如:

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

我不知道,但是,你为什么转换您_backingNewTags到数组[String]?为什么你不能直接访问标签?这将是更多的内存& CPU效率,并将简化您的代码...

+0

我很新的发展,我从教程中的这段代码。我在创建Realm中的一系列标签时遇到了问题,并且此代码至少可以工作。那么我应该在哪里使用你写的代码?在searchBar函数中?现在,我正在使用超级复杂的代码进行过滤,并且有点工作,但我确信有更简单的方法来执行此操作 –

+0

是的,您将在搜索栏中应用对象和筛选的提取操作,搜索字符串已经发生了变化,并且在我认为是表格视图呈现结果的情况下,您将从“结果”获得计数,并且在获取“cellForRow ...”时,您将返回单元格的属性来自该索引处的Realm对象。 – jpsim