Группы приложений iOS — общие CoreData не открываются

У меня есть приложение с базой данных CoreData, и я обращаюсь к ней с помощью UIManagedDocument. Чтобы поделиться данными с приложением Watchkit, я перемещаю базу данных в общую группу приложений.

Магазин создается вроде бы правильно, но после этого часто становится невозможно получить к нему доступ: UIManagedDocument все время пытается переконфигурировать магазин, а NSFileManager не находит файл (с fileExistsAtPath).

Проблема в расположении базы данных - если я сохраняю ее в каталоге documents вместо общей группы, она работает без проблем. Это также не проблема доступа к нему из обоих приложений, даже если я вообще не открываю приложение для часов, проблема появляется. Группа также корректно работает для обмена NSUserDefaults.

Кто-нибудь видел подобные проблемы? Есть ли какой-либо механизм блокировки, с которым мне нужно иметь дело определенным образом? Любая помощь будет принята с благодарностью, я много боролся с этой проблемой!


person Tiago Lira    schedule 02.06.2015    source источник


Ответы (1)


После долгих поисков я обнаружил, что storeURL будет меняться (случайно) между этими двумя:

file:///var/mobile/...
file:///private/var/mobile/...

Я использовал URLByResolvingSymlinksInPath в URL-адресе, как указано в следующем ответе, и невероятно исправил его: Что означает префикс /private в пути к файлу iOS?

Я предполагаю, что это системная ошибка с путями группы приложений... кажется, что разные пути заставляли persistentStoreCoordinator пытаться повторно открыть магазин, когда он уже был открыт.

person Tiago Lira    schedule 03.06.2015