2012-05-30 2 views
6

나는 사진의 톤을 다운로드하고 내가 다른 어디를 저장하는 데 필요하거나 어떻게 든 상태로 표시 아이폰 OS까지 5.1데이터 저장 때문에 앱이 거부되었습니다. 폴더의 모든 파일을 무시하도록하려면 어떻게해야합니까?

지금 애플이 나를 말하고있다 분명히 괜찮다고 문서 폴더의 하위 폴더에 저장합니다 응용 프로그램이 백업용이 아닙니다. 이것은 앱 업데이트이므로 대부분의 사용자는 데이터가 이미 이러한 하위 폴더에 존재합니다.

iOS에서 문서의 하위 폴더에있는 모든 파일을 건너 뛰거나 문서 폴더의 특정 파일을 건너 뛰게하려면 어떻게해야합니까?

제안한대로 파일을 모두 캐시로 옮기는 것은 대단한 작업입니다.

나는 이것을 읽을 수 있지만 나는이를 구현하기 위해 가정하고 정확히 어디 확신하지 : https://developer.apple.com/library/ios/#qa/qa1719/_index.html

+0

얼마나 moveItemAtURL'의 몇 : toURL : 오류 : '캐시 디렉토리에 존재하는 파일을 이동 전화 거대한 사업? do-not-backup-flag가 iOS 5.0에서 작동하지 않기 때문에 어쨌든 그렇게하지 않을 가능성이 큽니다. –

답변

5

당신은 다음과 같은에서 제안 된 함수를 호출, 모든 파일을 나열 NSFileNanager를 사용할 수 있습니다. 코드는 같은 것이다 :

// From Apple FAQ 
#import <sys/xattr.h> 
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL 
{ 
    assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]); 

    const char* filePath = [[URL path] fileSystemRepresentation]; 

    const char* attrName = "com.apple.MobileBackup"; 
    u_int8_t attrValue = 1; 

    int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0); 
    return result == 0; 
} 


- (void) addSkipBackupAttributeToItemsInFolder:(NSString*)folder 
{ 
    NSFileManager *fm = [NSFileManager defaultManager]; 
    NSArray *dirContents = [fm contentsOfDirectoryAtPath:folder error:nil]; 

    for (int curFileIdx = 0; curFileIdx < [dirContents count]; ++curFileIdx) 
    { 
     NSString* curString = [folder stringByAppendingPathComponent:[dirContents objectAtIndex:curFileIdx]]; 
     NSURL* curFileUrl = [NSURL fileURLWithPath:curString]; 
     [self addSkipBackupAttributeToItemAtURL: curFileUrl]; 
    } 
} 

을 그리고 당신은 그런이 사용됩니다 :

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    [self addSkipBackupAttributeToItemsInFolder:documentsDirectory]; 
+1

addSkipBackuopAttribute를 폴더 자체에 적용하면 해당 폴더 안의 모든 항목이 백업되지 않으므로 두 번째 방법이 필요합니다. – Slee

+0

한 가지 질문입니다. 우리는 당신과 같이 "백업하지 마라"라고 붙어 있습니다. 그리고 iOS 5.1에서 Apple이 iOS 5.0.1에서 사용하는 방법을 사용한 것을 보았습니다. 맞습니까? 왜냐하면, 나는 우리가 iOS 5.1에서 사용해야 할 필요가 있다고 애플이 말한 방식으로 작업 할 수 없기 때문이다. 파일은 표시되지 않지만 iOS 5.0.1에서 사용하기 위해 설명한 방법을 사용하면 파일에 잘 표시됩니다. 하지만 .... 애플은이 방법이 더 이상 사용되지 않는다고 말합니다. 어떻게 그걸 해결 했니? – FreelanceAr

관련 문제