从文件中读取 jpeg 失败并显示 "no such file" 但文件显然存在

Reading jpeg from file fails with "no such file" but file is clearly there

我 运行 从文件系统读取 jpeg 文件并在 NSImage 中显示图像时遇到问题。这是一段代码:

    NSError *myError;
    NSString *path = @"file:/Users/jpurlia/Documents/Development/Test/1915brsts880804of.jpg";
    NSURL *url = [NSURL fileURLWithPath:path];
    NSData *data = [NSData dataWithContentsOfURL:url
                                         options:0
                                           error:&myError];
    _photoImageView.image = [[NSImage alloc] initWithData:data];

运行 此代码在调用 dataWithContentsOfURL 时生成以下错误: 错误域=NSCocoaErrorDomain 代码=260 "The file “1915brsts880804of.jpg” couldn’t be opened because there is no such file." 而且,另外: {错误域=NSPOSIXErrorDomain 代码=2 "No such file or directory"}

文件确实存在,如果我复制路径并将其粘贴到网络浏览器中,jpeg 图像会按预期显示。 我猜这是为了防止应用程序直接访问文件系统而存在的某种权限问题?我在尝试打开从打开的面板中选择的文件时遇到了类似的问题,结果证明这是来自沙箱的 运行 Open/Save 面板的问题,所以我关闭了沙箱以获取我的应用程序的那个方面正在工作。

这是否为任何人敲响了警钟?我有点困惑...

如果要使用 fileURLWithPath 创建 NSURL,则需要提供路径,而不是 URL。删除 file:.

的使用
NSString *path = @"/Users/jpurlia/Documents/Development/Test/1915brsts880804of.jpg";
NSURL *url = [NSURL fileURLWithPath:path];

或者您可以修复文件 URL 并使用 NSURL URLWithString。在绝对文件路径前使用 file:// 这样你就有 3 /:

NSString *fileURLString = @"file:///Users/jpurlia/Documents/Development/Test/1915brsts880804of.jpg";
NSURL *url = [NSURL URLWithString:fileURLString];