2012-05-30 16 views
6

私は写真のトンをダウンロードし、私は他にどこに格納する必要があるか、何とかとしてマークのiOSまで5.1データストレージのために拒否されたアプリケーション - フォルダ内のすべてのファイルを無視するにはどうすればよいですか?

今Appleが私に言っている、明らかに大丈夫だったドキュメントフォルダのサブフォルダに格納するアプリを持っていますバックアップ用ではありません。これはアプリのアップデートですので、ほとんどのユーザーにとって、データはすでにこれらのサブフォルダに存在しています。

ドキュメントのサブフォルダ内のすべてのファイルをスキップしたり、ドキュメントフォルダ内の特定のファイルをスキップするにはどうすればよいですか?

すべてのファイルをキャッシュに移動するのは大変な作業です。

私はこれを読んで、私は、私はこれを実装すると仮定しています場所を正確に何を確認していません: https://developer.apple.com/library/ios/#qa/qa1719/_index.html

+0

どうmoveItemAtURL 'のカップルです:toURL:エラー:'キャッシュディレクトリに既存のファイルを移動呼び出し巨大な事業ですか?とにかくこれを避けることができない可能性が高いのは、iOS 5.0ではdo-not-backup-flagが機能しないからです。 –

答えて

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をフォルダ自体に適用するだけで、そのフォルダ内の何かがバックアップされないようになります。第2の方法の必要性。 – Slee

+0

1つの質問。私たちは、あなたのように "バックアップしないでください"という印を付けて立ち往生しています。そして、私はあなたがiOS 5.1でAppleがiOS 5.0.1で使う方法を使った方法を使ったことを知りましたか? AppleがiOS 5.1で使用する必要があると言っている方法で作業することはできません。ファイルはマークされていませんが、iOS 5.0.1で使用するために記述されている方法を使用すると、ファイルに十分な印が付けられます。しかし.... Appleは、その方法は非難されていると言います。どのように解決しましたか? – FreelanceAr

関連する問題