我試圖從應用程序包複製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);
}
它產生以下錯誤:
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");
}
但它:
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,並試圖如下修改我的代碼後也不起作用。變量是NO
。我試過的最後一件事是:
[data writeToFile:path atomically:YES];
但仍然徒勞。它返回NO
。
我需要注意的是,問題出現在設備上。在模擬器上它工作正常。 有人可以給我一個線索嗎?
你拷貝了同樣的錯誤字符串兩次;) – Vladimir
@AndreyChernukha對不起,複製過去的錯誤,我也添加了一些關於兩種方法之間的區別的解釋。 – rckoenes
@rckoenes確實有效。非常感謝。我會在四分鐘內接受你的回答 –