搜索NSManagedObject数组

时间:2018-03-22 07:19:26

标签: ios objective-c core-data nspredicate nsmanagedobject

我有一个NSManagedObjects数组。我想使用搜索栏搜索整个数组。但问题是在NSManagedObject数组中有不同类型的键(不同的实体)。就像我使用标题进行搜索一样,会有像以下几样的键:

" event_title"

" message_title"

" album_title"

现在我如何从数组中的所有这些字段中搜索关键字?

2 个答案:

答案 0 :(得分:0)

您可以创建一个带有搜索属性的协议,然后让所有NSManagedObject子类实现该协议,返回要搜索的任何字段。这当然要求它们都是相同类型或可以转换为相同类型

protocol SearchableKey {
   var searchKey: String
}

class Event: NSManagedObject, SearchableKey {
   var searchKey: String {
      return someFieldInEvent
   }
}

然后将搜索栏设置为在searchKey上搜索

编辑:我现在看到这是用objective-c标记的,我的答案是使用swift,但希望无论如何它都会有用

答案 1 :(得分:0)

我们假设Event为您NSManagedObject

var events = [Event]()

var event1 = Event()
event1.event_title = "Musical Bang"
event1.message_title = "Wellcome to all"
event1.album_title = "Bang bang"


var event2 = Event()
event2.event_title = "Mountain View"
event2.message_title = "Free passes available"
event2.album_title = "Hunt for freedom"


events.append(event1)
events.append(event2)


func search(for searchText: String) -> Any{
    let filtered = events.filter { (value) -> Bool in
        return value.event_title.hasPrefix(searchText) || value.message_title.hasPrefix(searchText) || value.album_title.hasPrefix(searchText)
    }
    return filtered
}