Как исправить «Песочницу чтения-записи-данных: ошибка при использовании Mac Catalyst» - PullRequest
6 голосов
/ 14 октября 2019

Я недавно обновил MacOS Catalina, чтобы можно было обновить некоторые из моих приложений с поддержкой Mac с помощью Catalyst. Всякий раз, когда я запускаю приложение и оно пытается получить доступ к данным CloudKit (я использую CloudKit для синхронизации основных данных, данных, если доступна учетная запись iCloud), оно затем вылетает со следующей ошибкой. [User Defaults] Couldn't write values for keys ( ApplicationAccessibilityEnabled ) in CFPrefsPlistSource<0x600002c07700> (Domain: com.apple.Accessibility, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null), Contents Need Refresh: Yes): setting preferences outside an application's container requires user-preference-write or file-write-data sandbox access

Я попытался изменить Разрешения и Доступ в настройках SandBox приложения в моих подписи и возможностях для чтения / записи. Я также попытался изменить входящие и исходящие соединения на.

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

if isICloudContainerAvailable() {
            print("iCloud Available")
            let container = NSPersistentCloudKitContainer(name: "Shopping_App")

            container.loadPersistentStores(completionHandler: {
                (storeDescription, error) in
                if let error = error as NSError? {
                    fatalError("Unresolved error \(error), \(error.userInfo)")
                }
            })

            return container
}

Я, кроме приложения, создаю / получаю данные CoreData и, если возможно, (которыйв этом случае) для подключения к CloudKit синхронизированных данных. Но он падает прямо сейчас, прежде чем он даже вызывает какие-либо представления, что заставляет меня думать, что он где-то падает в AppDeleget.

Обновление 14 октября - я обнаружил, что если я принудительно перепрыгну через точку останова, гдеприложение вылетает, я могу продолжить в приложение, и оно работает нормально. Это заставляет меня думать, что ошибка действительно в AppDeleget, особенно говоря, что пользовательский интерфейс не появляется до тех пор, пока я не перепрыгну через точку останова, установленную при сбое.

Обновление 4 ноября. Таким образом, эта проблема становитсядаже незнакомец. Я забыл, что использую бета-версию Xcode, так что все могло быть так, как только я понял, что на прошлой неделе. Я попытался запустить приложение через общедоступную версию, и приложение никогда не останавливалось для точки останова, а вместо этого полностью зависало с Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0). Эта ошибка просто очень странная. Будет ли это ошибкой, о которой я должен сообщить в Apple? Я думал о том, чтобы сделать это, но я решил не делать этого, потому что мне показалось, что это то, чем я мог бы заняться, но теперь переосмыслил, должен ли я или нет. Я хотел бы найти решение этой проблемы, потому что я хотел бы выпустить версию macOS для общественности, но мне не повезло найти решение.

Обновление 8 ноября - в Xcode 11.2.1ГМ семян проблема все еще сохраняется. Я до сих пор не нашел точную причину возникновения этой проблемы, но продолжу пробовать. Я также не смог воспроизвести ошибку, написанную в обновлении 4 ноября, на любой версии XCode. Я не нашел ничего другого, но хотел бы обновить это с информацией о семени GM, и если это все еще происходит.

Обновление 13 ноября

Я решил просто пойти дальше и загрузитьприложение для Apple на утверждение, так как его создание и запуск независимо от XCode работали просто отлично. Apple одобрила приложение без каких-либо жалоб по этому вопросу. Это просто кажется проблемой Xcode. Однако я продолжу обновлять его, и, если / когда я найду решение, я опубликую решение этой проблемы, но не нашел ничего другого, чтобы обойти или решить эту проблему.

...