Как исправить loadPersistentStores от сбоя при загрузке - PullRequest
1 голос
/ 01 апреля 2019

Я пытаюсь разработать приложение для XCode, которое использует данные ядра, однако, когда я отправляю приложение для проверки, оно вылетает на их симуляторах, но не на моих.Что здесь происходит?

Для начала, я недавно закончил создание приложения, разработка которого заняла некоторое время, и отправил его в iTunes connect.Мое приложение было отклонено из-за того, что «мы не смогли просмотреть ваше приложение, так как оно зависло при запуске».Я получил и символизировал линию, где происходит сбой.

https://imgur.com/a/3iX6pqc

Сбой происходит в строке 81 в моем делегате приложения именно туда, куда я иду, чтобы получить свой постоянный контейнер и загрузить его.

https://imgur.com/EzQvnSQ

    lazy var persistentContainer: NSPersistentContainer = {
        /*
         The persistent container for the application. This implementation
         creates and returns a container, having loaded the store for the
         application to it. This property is optional since there are legitimate
         error conditions that could cause the creation of the store to fail.
         */
        let container = NSPersistentContainer(name: "AlarmSavedData")
        container.loadPersistentStores(completionHandler: { (storeDescription, error) in

            if let error = error as NSError? {
                print("Here!")
                // Replace this implementation with code to handle the error appropriately.
                // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.



                /*
                 Typical reasons for an error here include:
                 * The parent directory does not exist, cannot be created, or disallows writing.
                 * The persistent store is not accessible, due to permissions or data protection when the device is locked.
                 * The device is out of space.
                 * The store could not be migrated to the current model version.
                 Check the error message to determine what the actual problem was.
                 */
                fatalError("Unresolved error \(error), \(error.userInfo)")

            }
        })
        return container
    }()

Я ожидал, что локальная база данных загрузится для них просто отлично, но по какой-то причине я единственный, для которого база данных загружается.Я могу использовать его, но когда команда Apple Review пытается его запустить, происходит сбой.Есть идеи о том, что происходит и как это исправить?Цель состоит в том, чтобы у каждого пользователя была своя собственная локальная база данных, использующая основные данные для хранения созданных данных.

Crash Log: https://imgur.com/a/rx9doSR

1 Ответ

0 голосов
/ 02 апреля 2019

Прежде всего, убедитесь, что вы тестируете свое приложение на симуляторе iOS 12.1.4, как указано в отчете о сбое.В отчете о сбое указывается, что Оборудование должно быть 1xxx , что, по-видимому, является своего рода заполнителем, но не полезно.

Я пока не могу объяснить сбой, но вотнекоторые подсказки, которые могут помочь вам найти его.

В TN2151 * 1010 от Apple, относительно типа сбоя EXC_BREAKPOINT, который у вас есть, указано:

Код Swift прекратит работу с этим типом исключения, есливо время выполнения возникает непредвиденное состояние, такое как:

  • необязательный тип со значением nil

  • неудачное принудительное преобразование типов

Объединение этого факта с тем, что сбой происходит в loadPersistentStores(), подразумевает, что, возможно, это не сбой для вас, потому что выУ вас уже есть постоянное хранилище на симулированном диске симулятора, то есть вы не являетесь новым пользователем.App Review - это, конечно, новый пользователь.Поэтому вы должны удалить данные вашего приложения, в частности файлы постоянных хранилищ, из симулятора и протестировать снова.Теперь ваш тест будет больше похож на обзор приложения.

Возможно, вам также следует прочитать этот ответ , в котором обсуждается несколько похожая ситуация.

...