Reputation: 1009
As mentioned at WWDC, iOS 11 should have support to index CoreData
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!
Upvotes: 6
Views: 1482
Reputation: 57040
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.
Upvotes: 8