我有一个NSManagedObjects
数组。我想使用搜索栏搜索整个数组。但问题是在NSManagedObject
数组中有不同类型的键(不同的实体)。就像我使用标题进行搜索一样,会有像以下几样的键:
" event_title
"
" message_title
"
" album_title
"
现在我如何从数组中的所有这些字段中搜索关键字?
答案 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
}