ios SwiftUI UIViewServiceErrorDomain Code=1 Terminated=disconnect方法

hjzp0vay  于 11个月前  发布在  iOS
关注(0)|答案(1)|浏览(214)
  • Xcode 14.0(14 A309),iOS部署目标15.0*
  • 主导航视图#1 >导航视图#2 >导航视图#3
  • SwiftUI View FileDownloaderView,带有附加到VStack的.fileImporter()
  • FileDownloaderView是NavigationView #3的子视图

当我使用fileImporter选择文件或取消fileImporter时,视图将返回navigationView #1而不是navigationView #3,并显示以下日志消息:

The view service did terminate with error:
Error Domain=_UIViewServiceErrorDomain Code=1 "(null)"
UserInfo={Terminated=disconnect method}

字符串
它以前工作得很好,但我可能在代码的其他地方做了一些更改,导致这种断开连接或在其中一个navigationViews中为nil。我无法找到错误,也无法确定它失败的确切位置/时刻。
对于改进调试或理解什么会触发这种类型的错误有什么帮助吗?
谢谢菲利普

nsc4cvqm

nsc4cvqm1#

我在使用iOS 17.2作为部署目标的XCode 15.1中得到了完全相同的错误。下面所有的假设都是修改了“自定义iOS目标属性”,以具有值为“TRUE”的条目“支持文档浏览器”。重新安装XCode并没有为我修复这个问题。
下面的代码足以重现错误(取消文件导入和选择文件时):

struct ContentView: View {
    @State private var isImporting = false

    var body: some View {
        VStack {
            Button("Import") {
                isImporting = true
            }
        }
        .fileImporter(isPresented: $isImporting, allowedContentTypes: [.json]) { result in
            print("importing")
        }
    }
}

字符串

即使抛出错误,也会打印“importing”,这意味着无论哪种情况,都正确调用了fileImporter的onCompletion回调。而且在实践中我发现,实际导入是否成功与此错误是否显示完全无关。

有一次,我的导入失败,因为我试图从应用程序文档文件夹之外导入文件(即文件应用程序或FileImporter菜单中的“On My iPhone”下显示的文件夹名称与我的应用程序类似)。在导入之前手动将其复制到该文件夹允许我导入它。在这两种情况下,调试器中仍然显示上述错误,并且没有抛出其他错误。
在另一种情况下,我的导入失败了,因为我试图使用decode而不是decodeIfPresent解码一个具有NULL值(即可选属性)的JSON文件。无论导入是否有效,上述错误都会显示在调试器中,并且它是唯一显示的错误!

相关问题