gpt4 book ai didi

ios - 我如何解决 NSCocoaErrorDomain :257 when pulling a file from the Files app?

转载 作者:行者123 更新时间:2023-11-29 11:26:33 30 4
gpt4 key购买 nike

我正在尝试访问文件以将副本拉入我的应用程序,以便用户可以将其与相关信息相关联。直到最近它都还可以正常工作,现在我突然收到以下消息:

Failed to read file, error Error Domain=NSCocoaErrorDomain Code=257 "The file “[File name]” couldn’t be opened because you don’t have permission to view it." UserInfo={NSFilePath=/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/[File name], NSUnderlyingError=0x281b88690 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}

这是抛出错误的代码:

//AppDelegate.m
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
if (![url.pathExtension isEqualToString:@"pdf"] && ![url.pathExtension isEqualToString:@"png"] && ![url.pathExtension isEqualToString:@"jpg"] && ![url.pathExtension isEqualToString:@"jpeg"]){
return false;
}
NSError* error = nil;
NSString *path = [url path];
NSData *data = [NSData dataWithContentsOfFile:path options: 0 error: &error];
if(data == nil) {
NSLog(@"Failed to read file, error %@", error);
}

//Do stuff with the file

return true;
}

我确实更新到 xcode 11 和 iOS 13,所以可能有我不知道的变化。

最佳答案

事实证明,有一个“使用”函数告诉应用程序它正在访问沙箱之外的文件。方法 startAccessingSecurityScopedResourcestopAccessingSecurityScopedResource在 NSURL 上需要使用 url 包裹代码,如下所示:

BOOL isAcccessing = [url startAccessingSecurityScopedResource];
NSError* error = nil;
NSString *path = [url path];
NSData *data = [NSData dataWithContentsOfFile:path options: 0 error: &error];
if(data == nil) {
NSLog(@"Failed to read file, error %@", error);
}
if (isAccessing) {
[url stopAccessingSecurityScopedResource];
}

我不确定 iOS 13 是否有任何特定要求,而以前不需要,但这是它工作和不工作之间唯一真正的变化。

关于ios - 我如何解决 NSCocoaErrorDomain :257 when pulling a file from the Files app?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58223929/

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