当我们尝试导出 CapturedRoom 时,出现 CannotCreateNode(path: "/9EE71ED0F8D6415496A7B9F0C3671DB0321") in

问题描述 投票:0回答:1

我们使用 RoomPlan API 来捕获数据,这些数据存储在代码中的“CapturedRoom”变量中(称为“finalResult”)。然后,我们尝试在文件管理器中保存 USDZ 文件。有时它有效,但有时我们会遇到如下问题

Coding Error: in _IsValidPathForCreatingPrim at line 3338 of usd/stage.cpp -- Path must be an absolute path: <>

无法创建节点(路径:“/9EE71ED0F8D6415496A7B9F0C3671DB0321”)

这是我们用于删除 CapturedRoom 数据的代码

func saveFileLocal() {
      if let finalResult {
          let fm = FileManager.default
          let documentsURL = fm.urls(for: .documentDirectory, in: .userDomainMask).first!
          //let documentsURL = URL.documentsDirectory
          let fileName = "\(UUID().uuidString).usdz"
          let fileURL = documentsURL.appendingPathComponent(fileName)
          do {
              try finalResult.export(to: fileURL)
          } catch {
              print(error)
          }
      }
  }
swift nsfilemanager file-manager roomplan
1个回答
0
投票

你的代码有点混乱。

  • URL
    而言,
    path
    是一个文件系统字符串路径,你所有的
    path
    变量实际上都是
    URL
    s。

  • absoluteURL
    在此上下文中不执行任何操作,请将其删除。

  • absoluteString
    绕行毫无意义,
    path.appendingPathComponent(c)
    是你想要的URL,但使用
    contentsOfDirectory(at:includingPropertiesForKeys:)
    你可以免费获得完整的URL。

    func saveFileLocal() {
          if let finalResult {
              let fm = FileManager.default
              let documentsURL = fm.urls(for: .documentDirectory, in: .userDomainMask).first!
              // or let documentsURL = URL.documentsDirectory
              let fileName = "\(UUID().uuidString).usdz"
              let fileURL = documentsURL.appendingPathComponent(fileName)
              do {
                  try finalResult.export(to: fileURL)
              } catch {
                  print(error)
              }
          }
      }
    
     func removeFiles() {
          let fm = FileManager.default
          let documentsURL = fm.urls(for: .documentDirectory, in: .userDomainMask).first!
          // or let documentsURL = URL.documentsDirectory
          do {
              let content = try fm.contentsOfDirectory(at: documentsURL, includingPropertiesForKeys: nil, options: .skipsHiddenFiles)
              for anURL in content {
                   try fm.removeItem(at: anURL)
              }
          } catch {
              print(error)
          }
      }
    
© www.soinside.com 2019 - 2024. All rights reserved.