Я пытаюсь использовать генератор запросов в моих основных данных. Мой основной набор данных выглядит так:
var managedObjectModel: NSManagedObjectModel = {
let bundle = Bundle.main
let modelURL = bundle.url(forResource: modelName, withExtension:"momd")!
return NSManagedObjectModel(contentsOf: modelURL)!
}()
// Creating a persistance Store Co-Ordinator
lazy var coordinator: NSPersistentStoreCoordinator = {
let coordinator = NSPersistentStoreCoordinator(managedObjectModel:self.managedObjectModel)
let documentsURL = self.applicationDocumentsDirectory
let storeURL = documentsURL.appendingPathComponent("Avysh")
do {
let options =
[NSMigratePersistentStoresAutomaticallyOption: true,
NSInferMappingModelAutomaticallyOption: true]
var error: NSError? = nil
try coordinator.addPersistentStore(ofType: NSSQLiteStoreType,
configurationName: nil,
at: storeURL,
options: options
)
} catch {
print("Error adding persistent store: \(error)")
}
return coordinator
}()
// Parent Context Connected to store co-ordinator
lazy var savingModelcontext:NSManagedObjectContext = {
var managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = self.coordinator
return managedObjectContext
}()
Затем, когда мне нужны данные, я создаю временный контекст с сохранениемModelContext в качестве родительского.
func getForYou(completionHandler: @escaping ([ForYouObject], Error?) -> Void) {
let getForYouQueue = DispatchQueue.global(qos: .userInteractive);
getForYouQueue.async {
// Trying to set up query generation here
let temporaryContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
temporaryContext.parent = self.savingModelcontext
do{
try temporaryContext.setQueryGenerationFrom(NSQueryGenerationToken.current);
let forYouService = ForYouService(context: temporaryContext);
//This calls the Fetch Request
let forYouList = forYouService.getAllForYouSorted();
var forYouObjectList: [ForYouObject] = []
completionHandler(forYouObjectList, nil);
}catch let err{
print("Error in setQuery Generation \(err.localizedDescription)")
completionHandler([], err);
}
}
}
Приложение падает с Uncaught Exception NSExceptionName(_rawValue: NSInternalInconsistencyException) With Reason Child contexts inherit parent context generations and may not have their own and [:]
Когда я добавляю точку останова для исключения, Apllication останавливается на try temporaryContext.setQueryGenerationFrom(NSQueryGenerationToken.current);
Я не уверен, что я делаю неправильно при настройке основных данных
Любая помощь приветствуется. Спасибо