【问题标题】:File couldn’t be opened because you don’t have permission to view it error文件无法打开,因为您无权查看错误
【发布时间】:2018-08-09 19:18:01
【问题描述】:

我在 Stack Overflow 上搜索了一下,似乎找不到解决方案。我有:

let fileURL = URL( string: "file:///Users/me/file.txt" )    
var rawDataString: String 
var errorString: String?

do {
    rawDataString = try String( contentsOf: fileURL!, encoding: String.Encoding.utf8 )
} catch let error as NSError {
    errorString = error.description
    print( errorString! )
    return
}

它出错了

Error Domain=NSCocoaErrorDomain Code=257 "文件“file.txt”不能 因您无权查看而被打开。”

为所有用户读取权限:

$ ls -al file.txt
-rw-r--r--@ 1 me  staff  348306 Dec 13  2016 file.txt

欢迎提出任何想法。

【问题讨论】:

  • 您需要在您的应用目标功能中关闭应用沙盒。另一个选项是 NSOpenPanel 让用户选择文件。
  • 顺便说一句,与您的问题无关,但 String.Encoding 是多余的(推断),无需将错误转换为 NSError encoding: .utf8 )} catch { print(error)
  • 你也可以使用URL fileURLWithPath 初始化器。您只需要删除 url 方案文件://。 let fileURL = URL(fileURLWithPath: "/Users/me/file.txt" )
  • 您也可以将 txt 文件拖放到您的项目中,并将其包含在您的 Bundle 中

标签: swift macos


【解决方案1】:

实际上,我无法在 swift 操场上获得上述首选答案来为我工作。

另一种解决方案是在 Xcode 中创建一个command line 应用程序。然后粘贴上面的内容,它应该可以正常工作。

【讨论】:

    【解决方案2】:

    任何遇到此线程的人,@LeoDabus 向我指出了在哪里关闭沙盒,这很有效:

    他还清理了我的代码:

    let fileURL = URL( fileURLWithPath: "/Users/me/file.txt" )    
    var rawDataString: String
    var errorString: String?
    
    do {
        rawDataString = try String( contentsOf: fileURL, encoding: .utf8 )
    } catch let error as NSError {
        errorString = error.description
        rawDataString = ""
        return
    }
    

    【讨论】:

    • 关闭应用沙盒对我来说不是一个选项。 App Sandbox 甚至没有被列出。还有其他原因吗?
    • 这很奇怪@ScottyBlades——我刚刚检查了一个我正在从事的项目,它肯定在那里。如果您在文件选择器窗口中单击项目名称,即所有文件位于树顶部的项目名称,然后您会看到一个窗口,其中包含常规、功能、资源标签等选项卡,如果您单击功能、应用程序沙盒位于顶部。我正在使用 Xcode 9.3.1。希望这会有所帮助。
    • 是的...在我的项目中运行 Xcode 9.2 在文件导航器中单击我的项目后,以我的项目为目标,我看到的功能 [iCloud、推送通知、游戏中心、钱包、Siri、Apple Pay、应用内购买、地图、个人vpn、网络扩展、热点配置、多路径、近场通信标签读取等等等。没有沙盒。
    • 您是在为 iOS 构建吗?这是针对 Mac 应用程序?
    猜你喜欢
    • 2020-03-12
    • 2020-07-02
    • 2016-03-10
    • 2014-07-09
    • 1970-01-01
    • 2015-02-23
    • 2018-12-25
    • 2015-04-15
    相关资源
    最近更新 更多