NSDocumentDirectory에있는 모든 문서를 NSCachesDirectory로 이동 한 다음 내 다음 버전의 응용 프로그램을 처음으로 실행할 때 해당 NSDocument 파일을 모두 삭제하려고합니다. 내가 이것을하고있는 유일한 이유는 애플의 업데이트가 NSDocumentsDirectory에 .PDF 파일을 저장하는 것에 대해 거부 되었기 때문에 애플의 iOS 데이터 저장 가이드 라인을 따르는 것이다. (이유는 알 수 없다. 업데이트 (앱은 거의 2 년이되었으며, 이후 1 일부터 .PDF를 저장했습니다.), 아마도 엄격한 리뷰어가 있습니까?)NSDocumentDirectory에서 NSCachesDirectory로 모든 파일을 이동하는 방법은 무엇입니까?
이미 다운로드 한 .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 =/사용자/야경/라이브러리/응용 프로그램 지원/아이폰 시뮬레이터를
나는이 시도 /5.1/Applications/96EB01D1-81B7-4ECE-B337-D2D663969EE3/Library/Caches, NSUnderlyingError = 0xb566d50 "작업을 완료 할 수 없습니다 파일이 존재합니다."
참고로 저장소 공간이 부족할 경우 캐시 디렉토리가 제거 될 수 있습니다. 이러한 위험없이이 PDF를 저장하려면 문서 디렉토리에 저장할 수 있지만 백업하지 않도록 표시해야합니다 (https://developer.apple.com/library/ios/#qa)./qa1719 /). 그러나 사용자가 다운로드 한 PDF *를 백업해야하며 원래 저장 위치가 적합해야한다고 주장합니다. – jrtc27
동의합니다. 백업해야하지만 내 앱의 거부에 대해 반박해야합니까? – klcjr89
업데이트가 긴급하지 않은 한 더 나은 사용자 환경을 제공해야한다고 생각하면 분쟁을 겪을 것입니다. 이 PDF는 어디서나 다운로드 할 수 있습니까? 아니면 모두 동일한 출처에서 제공되는 것입니까? 내가 묻는 이유는 그 PDF가 항상 액세스 가능하고 쉽게 다시 다운로드 할 수 있다면 백업해야한다고 말하기 때문입니다. – jrtc27