Я вижу несколько сбоев в Crashlytics, но не могу воспроизвести сбой, который происходит при запуске приложения. Кто-нибудь знает, как воспроизвести приведенный ниже сбой. Я пробовал все ответы на Github и stackoverflow, и никто не упомянул о воспроизведении этого конкретного сбоя. Поэтому, если у меня есть исправление, его невозможно протестировать, кроме как запустить исправление в производство, а затем предположить, что Crashlytics не будет показывать сбои.
Пожалуйста помоги.
Ошибка:
Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=io.realm Code=2 "Unable to open a realm at path '/var/mobile/Containers/Data/Application/03BA7C37-9852-4A01-8EF6-949E308EADCD/Documents/default.realm.lock': open() failed: Operation not permitted." UserInfo = {Error Code=2, NSFilePath=/var/mobile/Containers/Data/Application/03BA7C37-9852-4A01-8EF6-949E308EADCD/Documents/default.realm.lock,
код вызова
//passing the fileProtectionType as .none
RealmHelper.configureRealmFiles(with: .none)
Образец кода
static func configureRealmFiles(with fileProtectionType: FileProtectionType) {
guard let folderPath = realm.configuration.fileURL?.deletingLastPathComponent().path else {
return
}
do {
try FileManager.default.setAttributes([FileAttributeKey.protectionKey: fileProtectionType],
ofItemAtPath: folderPath)
} catch {
logI("Realm: Couldn't change Realm file protection type")
}
}
Пожалуйста, поделитесь своим кодом. Особенно тот, где вы используете Realm
при запуске приложения.
@ Вацлав, я обновил вопрос, чтобы получить код. Есть ли способ воспроизвести сам сбой, чтобы понять, когда это происходит?
ржу не могу. Я знаю это. Вот почему я спрашивал, отключен ли ваш попробовал это с песочницей.
@Jay, как мне отключить песочницу для проекта приложения iOS, если я не могу его изменить? тоже этого не делал. Также нормально ли отключать песочницу, когда вы выпускаете приложение в магазин приложений? Также мой вопрос больше о том, как воспроизвести этот сбой, если вы также можете помочь в этом.
@Jay спасибо, как я уже сказал, я пытался отключить опцию песочницы, но эта опция недоступна на вкладке возможностей моего проекта, поэтому я не могу ее отключить.
Ах! вы создаете приложение для iOS... Функция Sandbox — это macOS, извините, я забыл об этом.
у кого-нибудь есть решение этой проблемы?
Документация по области содержит некоторую информацию о том, как справиться с этой ошибкой. Проверьте, подходят ли их инструкции по понижению атрибута доступа к файлам для вашего случая.
Я использую FileManager.default.setAttributes и передаю fileProtectionType в .none, будет ли это проблемой?
Добавление default.realm.lock в новое место сделало свое дело и предотвратило повторное появление сбоев. Однако мне так и не удалось воспроизвести аварию. Это потому, что это может происходить в фоновом режиме.
можете ли вы объяснить больше это.
Удалите модуль области из проекта и переустановите, это помогло мне :)
Что, если что-то уже находится в производстве и работает, тогда использование моего предложенного решения работает.
Вы пытались отключить песочницу, если она включена? Выберите проект в левом столбце, затем вкладка «Возможности» -> «Песочница».