在Xcode命令行应用程序中无法读取文件的问题

3

我很难在Xcode 11.6的命令行工具项目中读取文件。

步骤:

使用Mac OS部分中的模板创建新的命令行工具项目。

在main.swift中:

import Foundation
let fileURL = URL( fileURLWithPath: "/Users/ausom4/Desktop/myTest.txt" )
var rawDataString: String
var errorString: String?

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

这段代码可以在Xcode中成功构建,但是在控制台中总是打印出一个空字符串。

然而,如果我在终端中进入我的产品位置并运行构建,我会得到文件的内容。

我没有启用沙盒。在这个Xcode模板中,默认情况下也未启用沙盒。我还为Xcode提供了完全磁盘访问权限。

我可以在Playground中运行此代码。

可能的问题是什么?


调试问题的第一步是打印错误信息print(error)... - undefined
我遇到了以下错误:错误域=NSCocoaErrorDomain 代码=257 "无法打开文件“myTest.txt”,因为您没有权限查看它。" 用户信息={NSFilePath=/Users/ausom4/Desktop/myTest.txt, NSUnderlyingError=0x1005425e0 {错误域=NSPOSIXErrorDomain 代码=1 "操作不允许"}}我尝试给我的文件赋予 chmod 777 权限,但是返回相同的错误。 - undefined
1个回答

1

这不是沙盒 - 这是macOS安全和隐私系统。

在第一次启动时,您必须收到警报,询问类似于“TestFileReading”想要访问您的桌面文件夹中的文件。,然后您授予该应用程序访问权限。

如果您没有授予访问权限(或由于某种原因macOS 忘记询问),则可以随时在系统偏好设置中手动授予访问权限:

demo

在这一切都完成之后,您的代码片段按预期工作-使用Xcode 12 / macOS 10.15.6测试过。

很不幸的是,当我在运行项目时,Xcode从来没有提示我是否允许访问桌面。我无法在文件和文件夹菜单中添加新应用程序,只能在解锁后删除它们。我正在使用11.0测试版。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接