iOS 崩溃:无法在 Path 中打开领域
Posted
技术标签:
【中文标题】iOS 崩溃:无法在 Path 中打开领域【英文标题】:iOS crash : Unable to open a realm at Path 【发布时间】:2019-05-28 16:29:05 【问题描述】:我在 Crashlytics 上看到了许多崩溃,但无法重现应用启动时发生的崩溃。有谁知道如何重现以下崩溃。我已经尝试了 Github 和 *** 上的所有答案,但没有人提到重现这个特定的崩溃。 因此,如果我确实有修复程序,那么除了将修复程序投入生产然后假设 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")
【问题讨论】:
您是否尝试过关闭沙盒(如果它已打开)?在左列中选择项目,然后选择 Capabilities 选项卡->Sandboxing。 请分享您的代码。尤其是在应用启动时使用Realm
的那个。
@Václav 我已更新问题以获得代码。有没有办法复制崩溃本身以了解这种情况何时发生?
哈哈。我知道。这就是为什么我要问您是否在关闭沙盒的情况下尝试过。
@Jay 如果我无法更改 ios 应用项目的沙盒,我将如何关闭它?我也没有这样做。当您将应用程序发布到应用商店时,是否可以关闭沙箱?另外,我的问题更多是关于如何复制此崩溃,如果您也可以提供帮助。
【参考方案1】:
Realm documentation 有一些关于如何处理这个错误的信息。检查他们降级文件访问属性的说明是否适合您的情况。
【讨论】:
我正在使用 FileManager.default.setAttributes 并将 fileProtectionType 传递给 .none 这会是个问题吗?【参考方案2】:在新位置添加 default.realm.lock 可以解决问题并阻止崩溃再次出现。但是我永远无法复制崩溃。这是因为它可能在后台发生。
【讨论】:
你能解释一下吗?【参考方案3】:从项目中删除领域 pod 并重新安装它对我有帮助:)
【讨论】:
如果某些东西已经在生产和使用中,那么使用我建议的解决方案就可以了。以上是关于iOS 崩溃:无法在 Path 中打开领域的主要内容,如果未能解决你的问题,请参考以下文章
打开相机时 Flutter Image_Picker 崩溃 iOS 应用
React Native IOS App 在没有网络连接时崩溃