打开嵌入式 RTF 文件的 Mac 沙盒问题

问题描述

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

代码如下所示:

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

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

我哪里设置错了?

谢谢!

解决方法

感谢您的评论。

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

然而,OpenFile 已被更新的 open(_:) 替换

let name = "Legal.rtf"

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

NSWorkspace.shared.open(aURL)

这个调用不介意你传递两个部分的字符串。