6

大量の写真をダウンロードしてDocumentsフォルダーのサブフォルダーに保存するアプリがあります。これはiOS5.1までは明らかに問題ありませんでした。

今、Appleは私にそれらを他の場所に保存する必要があると言っています。これはアプリのアップデートであるため、ほとんどのユーザーにとって、データはこれらのサブフォルダーに既に存在します。

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

彼らが提案するように、すべてのファイルをキャッシュに移動することは、大変な仕事になるでしょう。

私はこれを読みましたが、これをどこに実装するのか正確にはわかりません: https ://developer.apple.com/library/ios/#qa/qa1719/_index.html

4

1 に答える 1

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];
于 2012-05-30T19:04:00.883 に答える