簡體   English   中英

macOS沙箱上的Swift文件讀取權限錯誤

[英]Swift file reading permission error on macOS sandbox

我正在嘗試在macOS Swift應用程序(Xcode 9 / Swift 4)中讀取文件系統上文件的內容。

我正在使用以下代碼段:

let path = "/my/path/string.txt"
let s = try! String(contentsOfFile: path)
print(s)

我的問題如下:

  1. 這在操場上工作
  2. 當我使用命令行工具 macOS應用程序模板時此方法有效
  3. 當我使用Cocoa App macOS應用程序模板時,這會導致權限錯誤

權限錯誤如下:

致命錯誤:“嘗試!” 表達式意外引發錯誤:

錯誤域= NSCocoaErrorDomain代碼= 257“無法打開文件” data.txt“,因為您沒有查看權限。”

UserInfo = {NSFilePath = / my / path / data.txt,NSUnderlyingError = 0x60c0000449b0 {Error Domain = NSPOSIXErrorDomain代碼= 1“不允許操作”}}

我想它與沙箱有關,但我沒有找到任何有關它的信息。

  1. 如何在沙盒應用程序中從文件系統讀取? 我的意思是,有太多需要打開文件對話框的GUI應用程序,這並不是沙盒應用程序不從沙盒外部讀取文件的現實限制。

  2. 另外,如何在“構建設置”中關閉沙箱?

  3. 最后,我嘗試在默認的Cocoa Apps和命令行工具模板之間比較project.pbxproj文件,但沒有看到任何有意義的區別,例如有關安全性或沙箱的東西。 如果不在此處,這些設置存儲在哪里?

項目符號1:您有答案,您需要使用NSOpenPanel獲得用戶訪問文件的權限。 您可以使用NSOpenPanel方法將用戶的選擇限制在“取消”按鈕和您想要的文件上,從而使“請求訪問”對話框成為可能。 Apple的App沙盒設計指南開始

項目符號2:您的想法正確,只是選項卡錯誤,您應該在“摘要”選項卡上找到沙箱開關。

高溫超導

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM