gpt4 book ai didi

ios - 无法写入文档目录

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:43:47 26 4
gpt4 key购买 nike

我正在尝试将 json 文件从应用程序包复制到 Document 目录,但令人惊讶的是我无法做到这一点。这是代码:

NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [array lastObject];
NSString *path = [docDir stringByAppendingPathExtension:@"themes.json"];

if (![[NSFileManager defaultManager] fileExistsAtPath:path])
{
NSString *themesPath = [[NSBundle mainBundle] pathForResource:@"themes" ofType:@"json"];
NSError *error = nil;

[[NSFileManager defaultManager] copyItemAtPath:themesPath toPath:path error:&error];

if (error)
NSLog(@"Error %@", error);
}

它会产生以下错误:

Error Domain=NSCocoaErrorDomain Code=513 "The operation couldn’t be completed. (Cocoa error 513.)" UserInfo=0x194a0e90 {NSSourceFilePathErrorKey=/var/mobile/Applications/ACED3EF9-B0D8-49E8-91DE-37128357E509/Frinder.app/themes.json, NSUserStringVariant=( Copy ), NSFilePath=/var/mobile/Applications/ACED3EF9-B0D8-49E8-91DE-37128357E509/Frinder.app/themes.json, NSDestinationFilePath=/var/mobile/Applications/ACED3EF9-B0D8-49E8-91DE-37128357E509/Documents.themes.json, NSUnderlyingError=0x194a0400 "The operation couldn’t be completed. Operation not permitted"}

经过搜索,我找到了 this question并尝试如下修改我的代码:

 if (![[NSFileManager defaultManager] fileExistsAtPath:path])
{
NSString *themesPath = [[NSBundle mainBundle] pathForResource:@"themes" ofType:@"json"];
NSData *data = [NSData dataWithContentsOfFile:themesPath];

BOOL success = [[NSFileManager defaultManager] createFileAtPath:path contents:data attributes:nil];

if (!success)
NSLog(@"Fail");
}

但它也不起作用。 success 变量为 NO。我最后尝试的是:

[data writeToFile:path atomically:YES];

但仍然是徒劳的。它返回 NO

我需要注意的是,该问题仅出现在设备上。在模拟器上它工作正常。 谁能给我一个线索?

最佳答案

第一个例子在一件事上是正确的:

[docDir stringByAppendingPathExtension:@"themes.json"];

应该是:

[docDir stringByAppendingPathComponent:@"themes.json"];

这很清楚,我们阅读了错误消息,您看到它尝试将文件写入 /var/mobile/Applications/ACED3EF9-B0D8-49E8-91DE-37128357E509/Documents.themes.json。请注意,在应该有 / 的地方有一个 .

stringByAppendingPathExtension: 用于给文件添加扩展名,jpg, txt, html, .....

stringByAppendingPathComponent 将文件添加到路径,通过添加正确的目录分隔符,如 /

你的第二个例子肯定会失败,因为应用程序包是只读的。

关于ios - 无法写入文档目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22194890/

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