Сохранение основных данных в экземплярах приложений

Я успешно сохранил основной контекст данных. когда я удаляю экземпляр приложения (только экземпляр, а не само приложение), все сохраненные управляемые объекты в контексте основных данных также удаляются. Но я хочу сохранить эти объекты. Вот снимок моего кода. Когда я запускаю приложение в первый раз, этот код записывает «aaban» в контекст основных данных. и сохраняет его.

Теперь во второй раз этот код печатает «aaban», если я не удаляю экземпляр приложения (не само приложение). Но если я удалю экземпляр приложения (не само приложение), это не напечатает «aaban».

введите здесь описание изображения


person Aaban Tariq Murtaza    schedule 23.07.2018    source источник
comment
context.save() вызывается?   -  person Prashant Tukadiya    schedule 23.07.2018
comment
да. позвольте мне также поделиться этим кодом. func applicationDidEnterBackground (_ приложение: UIApplication) { self.saveContext() }   -  person Aaban Tariq Murtaza    schedule 23.07.2018
comment
@aaban-tariq-murtaza: Обычно вы не ждете, пока приложение войдет в фоновый режим, чтобы сохранить данные в постоянном хранилище, а когда вы думаете, что у вас есть стабильные данные, вы обновляете свои основные данные. Мы не можем помочь вам с именем метода, таким как self.saveContext(), мы не знаем, что вы реализовали внутри него, поэтому, пожалуйста, опубликуйте код для этого, чтобы мы могли помочь вам в дальнейшем.   -  person Sandeep Bhandari    schedule 23.07.2018
comment
Всякий раз, когда я создаю один управляемый экземпляр. Я также использую для сохранения. см. этот код\n let city = City(context: SharedData.shared().managedContext!)\n city.id = (item[CONSTANTS.JSON_KEYS.LIST_HOME_CITY_ID] as! String\n SharedData.shared().managedContext?. спасти()   -  person Aaban Tariq Murtaza    schedule 23.07.2018
comment
даже я также проверил базовый sqlite, у sqlite также есть сохраненные данные. но когда я удалил экземпляр приложения (не само приложение), эти данные sqlite также были удалены.   -  person Aaban Tariq Murtaza    schedule 23.07.2018
comment
Как симулятор обрабатывает каталоги данных приложений в более поздних версиях iOS, хорошо объясняется в stackoverflow.com/a/29986807/6875565.   -  person particleman    schedule 23.07.2018


Ответы (1)


Если вам нужно, сохраните только относительные URL-адреса, а не абсолютные, поскольку абсолютные URL-адреса iOS 8 для песочницы приложения будут меняться каждый раз при перезапуске приложения. Вот почему вы видите, что BAF03763-B294-4EBB-AB9B-06B29B8EDB80 заменено на C7669201-1606-4596-B420-87A543569DDD.

Вы должны просто получать путь к вашему магазину sqlite каждый раз, когда приложение перезапускается.

person Ladislav    schedule 23.07.2018