【问题标题】:NSURL creation hangsNSURL 创建挂起
【发布时间】:2018-07-28 03:15:40
【问题描述】:

我正在尝试为文件路径创建一个 NSURL:/private/var/mobile/Containers/Data/PluginKitPlugin/5EF4C1A8-D8F2-4867-B163-766C691A38C7/Documents/some_folder_name/data.mp4

String file_path = new File(documents_path + File.separator + some_folder_name + File.separator + "data.mp4").getAbsolutePath() 

文件路径是通过获取文档目录并手动附加文件路径的其余部分来创建的。它实际上来自使用 j2objc 生成的 Objective C 代码(基本上是 java 代码)。

现在,当我执行时,

[NSURL fileURLWithPath: file_path]

,执行被卡在那里。我能够在 xcode 中验证当我暂停时,我无法退出 NSURL 代码。

我哪里错了?

【问题讨论】:

  • 抱歉...已更新为实际值。路径是用 java 代码构造的。 new File(documents_path + File.separator + "test.mp4").getAbsolutePath()
  • 您仍应使用能够充分展示您的问题的相关代码更新您的问题。
  • 您更新的问题未显示 Objective-C 代码。请发布您的真实 Objective-C 代码。
  • 我用java写了代码,用j2objc创建了Objective C代码。如果我复制了翻译后的代码,那将没有多大意义,因为对 ios FS 的实际调用是在调用堆栈中的许多层下完成的。
  • 不知道为什么这个问题被否决了。问题或解决方案都不是微不足道的。 j2objc 生成的代码使用它自己的库,这些库是 jdk 的 Objective C 翻译。

标签: ios objective-c nsurl


【解决方案1】:

正如您所说,您正在手动附加路径。最好使用文件管理器的默认方法来创建文件夹和附加路径。

最后的路径应该被添加到 NSUrl。

【讨论】:

  • 它就是这样工作的!将中间文件夹的创建移到 Objective C/Swift 后,URL 就创建好了。
【解决方案2】:

如果您在 Objc/Swift 中编写代码,它会起作用,但您不需要这样做。在与此链接的 Google 群组帖子中,您提到了“mkdirs”,但您没有在上面调用它。假设路径本身是有效的,您可以使用 Java/J2objc 代码执行此操作,如果您对 J2objc 感到困扰,您也可以,对吧?

File dir = new File(documents_path + File.separator + some_folder_name);
dir.mkdirs();
File dataFile = new File(dir, "data.mp4");
String file_path = dataFile.getAbsolutePath();

应该验证 'documents_path' 是 Java 的有效形式。

【讨论】:

  • 我会验证的。
猜你喜欢
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-18
  • 1970-01-01
相关资源
最近更新 更多