gpt4 book ai didi

objective-c - 从文件读取 jpeg 失败,显示 "no such file",但文件显然在那里

转载 作者:行者123 更新时间:2023-12-03 17:46:25 25 4
gpt4 key购买 nike

我在从文件系统读取 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“无法打开文件“1915brsts880804of.jpg”,因为没有这样的文件。”并且,另外:{Error Domain=NSPOSIXErrorDomain Code=2“没有这样的文件或目录”}

该文件确实存在,如果我复制路径并将其粘贴到 Web 浏览器中,则 jpeg 图像将按预期显示。我猜这是某种权限问题,旨在阻止应用程序直接访问文件系统?在尝试打开从“打开面板”中选择的文件时,我遇到了类似的问题,结果证明这是从沙箱运行“打开/保存面板”时出现的问题,因此我关闭了沙箱以使应用程序的这方面正常工作。

这对任何人来说都敲响了警钟吗?我有点困惑...

最佳答案

如果您想使用 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];

关于objective-c - 从文件读取 jpeg 失败,显示 "no such file",但文件显然在那里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57234673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com