2016-03-14 2 views
-1

Итак, я пытаюсь создать расширение виджета сегодня, используя данные, хранящиеся в родительском приложении.Невозможно создать хранилище SQL с нулевым URL

Я пытаюсь сделать это, создав Persistent Store Coordinator, как в родительском приложении, и используя URL-адрес основной базы данных приложений.

Однако при этом я получаю следующую ошибку;

2016-03-13 12: 59: 02,155 TodayWidget [10942: 1456153] Не удалось наследовать CoreMedia разрешений от 5079: (NULL) 2016-03-13 12: 59: 02,336 TodayWidget [10942: 1456112 ] *** Завершение приложения из-за неотображаемого исключение «NSInvalidArgumentException», причина: «Невозможно создать хранилище SQL с нулевым URL-адресом».

Вот что я делаю в контроллере виджетов Сегодня. containerPath такой же, как идентификатор связки для сегодняшней цели расширения. Имя файла containerPath?.URLByAppendingPathComponent sql совпадает с именем файла sql-файла основного содержимого ядра, а также modelURL - это то же самое, что и в родительском приложении.

var context: NSManagedObjectContext! 

let fileManager = NSFileManager.defaultManager() 
var containerPath = fileManager.containerURLForSecurityApplicationGroupIdentifier("com.company.APPNAME.TodayWidget") 

containerPath = containerPath?.URLByAppendingPathComponent("SingleViewCoreData.sqlite") 
let modelURL = NSBundle.mainBundle().URLForResource("APPNAME", withExtension: "mom") 
let model = NSManagedObjectModel(contentsOfURL: modelURL!) 
let coordinator = NSPersistentStoreCoordinator(managedObjectModel: model!) 
    do { 
     try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: containerPath, options: nil) 
    } catch { 
    print("yellow") 
    } 

    context = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType) 
    context.persistentStoreCoordinator = coordinator 

Кто-нибудь знает, как я могу разрешить ошибку?

PS: Я включил и создал группы приложений и добавил сегодняшний виджет в качестве цели для базовой модели данных и подклассов.

+0

Не кто-то уже объяснил причину, в другой раз, когда вы спросили, а затем удалил этот вопрос? –

+0

@PetahChristian no, они только что сказали, что я должен исследовать контейнерный патч, а также вопрос был не очень подробным, и сам вопрос не был ясен. – RileyDev

+0

Почему вы не улучшили исходный вопрос? Ничего не изменилось в отношении ошибки. Как и раньше, ваш 'containerPath' по-прежнему равен нулю. –

ответ

2

"com.company.APPNAME.TodayWidget" выглядит подозрительно. Он выглядит как идентификатор пакета для вашего сегодняшнего виджета. Аргумент containerURLForSecurityApplicationGroupIdentifier() должен быть строкой, указанной вами при настройке com.apple.security.application-groups.

+0

Перейдите в свою целевую аудиторию> Возможности> Группы приложений, чтобы проверить строку – JSA986

Смежные вопросы