gpt4 book ai didi

ios - 如何将所有文件从 NSDocumentDirectory 移动到 NSCachesDirectory?

转载 作者:行者123 更新时间:2023-11-29 11:09:42 24 4
gpt4 key购买 nike

我正在尝试将驻留在 NSDocumentDirectory 中的所有文档移动到 NSCachesDirectory,然后在我的应用程序的下一个版本更新首次启动应用程序时删除所有这些 NSDocument 文件。我这样做的唯一原因是遵守 Apple 的 iOS 数据存储指南,因为我的应用程序更新因将 .PDF 文件保存到 NSDocumentsDirectory 而被拒绝(我不知道为什么,因为直到这个应用程序才被拒绝更新(应用程序已经快 2 岁了,我从第一天起就一直以这种方式保存 .PDF),也许我有一个严格的审阅者?)

我需要将所有用户已下载的 .PDF 文件移动到 NSCachesDirectory,然后从 NSDocumentDirectory 中删除它们。

有没有简单的方法可以做到这一点?

预先感谢您提供的任何帮助。

我试过这个:

NSFileManager *fileManager = [NSFileManager defaultManager];

NSError *error;
NSUserDefaults *Defaults;
int launchCount;

Defaults = [NSUserDefaults standardUserDefaults];
launchCount = [Defaults integerForKey:@"launchCount" ] + 1;
[Defaults setInteger:launchCount forKey:@"launchCount"];
[Defaults synchronize];

if(launchCount == 1) {

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSArray *path2 = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *dest = [path2 objectAtIndex:0];

NSArray *Contents = [fileManager contentsOfDirectoryAtPath:documentsDirectory error:&error];

for(NSString *source in Contents)
{
if(![fileManager moveItemAtPath:source
toPath:dest
error:&error])
{
//TODO: Handle error
NSLog(@"Error: %@", error);
}
}
}

但我在控制台中收到此错误:

NSFilePath=Test.pdf, NSDestinationFilePath=/Users/Charley/Library/Application Support/iPhone Simulator/5.1/Applications/96EB01D1-81B7-4ECE-B337-D2D663969EE3/Library/Caches, NSUnderlyingError=0xb566d50 “操作无法”未完成。文件存在”

最佳答案

是的,使用 NSFileManager:

获取您的文档路径和缓存路径。遍历所有文件,并使用 NSFileManager 移动它们

- (void) moveAllDocs {
NSFileManager *fileManager = [NSFileManager defaultManager];

NSError *error = nil;

NSString *sourceDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *destinationDirectory = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

NSArray *contents = [fileManager contentsOfDirectoryAtPath:sourceDirectory error:&error];

for(NSString *sourceFileName in contents) {
NSString *sourceFile = [sourceDirectory stringByAppendingPathComponent:sourceFileName];
NSString *destFile = [destinationDirectory stringByAppendingPathComponent:sourceFileName];
if(![fileManager moveItemAtPath:sourceFile toPath:destFile error:&error]) {
NSLog(@"Error: %@", error);
}
}

}

关于ios - 如何将所有文件从 NSDocumentDirectory 移动到 NSCachesDirectory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12100749/

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