As mentioned at WWDC, iOS 11 should have support to index Core Data so that it is searchable via Spotlight. This is the WWDC presentation:
https://developer.apple.com/videos/play/wwdc2017/210/
However, after watching the video and looking at docs, I still have no idea how to setup my core data objects so they are searchable from the phones spotlight search.
I guess the main questions are:
1.) How do you actually set which attributes of a certain object type are searchable.
2.) How do you setup a NSCoreDataCoreSpotlightDelegate and get it to process the data? It looks like NSPersistentStore has a property
var coreSpotlightExporter: NSCoreDataCoreSpotlightDelegate
but it's readyonly :(
I couldn't find anything that explained this stuff clearly. Thanks!
You do not set coreSpotlightExporter directly. Instead, set the NSCoreDataCoreSpotlightExporter option with your export delegate:
container.persistentStoreDescriptions.forEach {
$0.setOption(MyCoreDataCoreSpotlightDelegate(forStoreWith:$0, model: container.managedObjectModel), forKey:NSCoreDataCoreSpotlightExporter)
}
I added this code before calling loadPersistentStores(completionHandler:).
To set attributes and entities, you update the appropriate properties for NSAttributeDescription and NSEntityDescription or in your .xcdatamodeld in the UI.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With