Я использую Xcode 9 и Swift 4. Я запускаю загрузку нескольких файлов JSON, когда приложение находится на переднем плане. Затем приложение анализирует эти файлы и сохраняет их в CoreData. Это хорошо работает, когда приложение находится на переднем плане. Однако, если приложение находится в фоновом режиме, файлы по-прежнему загружаются правильно, но данные не анализируются и сохраняются в CoreData. Только когда пользователь возвращается на передний план, анализ и сохранение данных продолжаются.
У меня включены фоновые режимы - Фоновая выборка и Удаленные уведомления.
У меня есть около 10 функций, похожих на приведенную ниже, в которой он обрабатывает файлы JSON одновременно:
func populateStuff(json: JSONDictionary) -> Void {
let results = json["result"] as! JSONDictionary
let stuffData = results["Stuff"] as! [JSONDictionary]
let persistentContainer = getPersistentContainer()
persistentContainer.performBackgroundTask { (context) in
for stuff in stuffData {
let newStuff = Stuff(context: context)
newStuff.stuffCode = stuff["Code"] as? String
newStuff.stuffDescription = stuff["Description"] as? String
do {
try context.save()
} catch {
fatalError("Failure to save context: \(error)")
}
}
}
}
func getPersistentContainer() -> NSPersistentContainer {
let persistentContainer = NSPersistentContainer(name: "MyProjectName")
persistentContainer.loadPersistentStores { (_, error) in
if let error = error {
fatalError("Failed to load core data stack: \(error.localizedDescription)")
}
}
persistentContainer.viewContext.automaticallyMergesChangesFromParent = true
persistentContainer.viewContext.mergePolicy = NSMergePolicy.mergeByPropertyObjectTrump
return persistentContainer
}
Может кто-нибудь посоветовать мне, почему это может произойти и как это преодолеть?
1010 * ТИА *