【问题标题】:Mac Sandbox issues with opening embedded RTF files打开嵌入式 RTF 文件时出现 Mac 沙盒问题
【发布时间】:2021-04-19 17:04:21
【问题描述】:

我的 Mac 程序通常附带一些包含法律细节的内部富文本文件。我使用 NSWorkspace openFile 调用在 TextEdit 中打开文件。

代码如下所示:

guard let aPath = Bundle.main.path(forResource: “Legal.rtf”, ofType: nil) else { return }
NSWorkspace.shared.openFile(aPath, withApplication: nil)

这一直有效,直到最近这段代码返回“无法打开应用程序。 -50”。这是沙盒问题吗?应该允许访问捆绑包中的文件。我们这样做是为了图像等。

我做错了什么?

谢谢!

【问题讨论】:

  • 第一行是错误的。
  • aPath 的值是否正确?您是否尝试过“rtf”类型的资源“Legal”?

标签: swift macos sandbox nsworkspace


【解决方案1】:

感谢您的 cmets。

我应该首先提到我包含文件名和文件类型(扩展名)的参数字符串。所以我不得不拆分它们,这对 NSString 来说很容易做到,但对 Swift String 来说不是立即可用的。稍微转换一下就可以得到这两个字符串。

但是,OpenFile 已被更新的 open(_:) 替换

let name = "Legal.rtf"

guard let aURL = Bundle.main.url(forResource: name, withExtension: "") else { return }

NSWorkspace.shared.open(aURL)

此调用不介意您将字符串与两个部分一起传递。

【讨论】:

  • ...但不能立即用于 Swift String。真的吗?你在说什么NSString API?而且您的示例显示了一个字符串文字,无论如何都不难拆分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多