15

フォルダ全体がiTunesによってバックアップされないようにしようとしています。テクニカルレポートhttp://developer.apple.com/library/ios/#qa/qa1719/_index.htmlに従いましたが、falgは常にゼロのようです。シミュレーターとデバイスで試してみたIOS5.1を使用しています。しかし、何も役に立ちません。メソッドは毎回「成功」を返しますが、フラグはまだありません。

+ (BOOL) hasSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
    NSError *error = nil;

    id flag = nil;
    BOOL success = [URL getResourceValue: &flag
                                  forKey: NSURLIsExcludedFromBackupKey error: &error];

    if(!success){

        NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
        return false;
    }

    if (!flag)
        return false;

    return [flag boolValue];
}

+ (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
    NSError *error = nil;

    BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES]
                                  forKey: NSURLIsExcludedFromBackupKey error: &error];

    if(!success){

        NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);

    }

    return success;

}

+ (BOOL)removeSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
    NSError *error = nil;

    BOOL success = [URL setResourceValue: [NSNumber numberWithBool: NO]
                                  forKey: NSURLIsExcludedFromBackupKey error: &error];

    if(!success){

        NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);

    }

    return success;

}
4

2 に答える 2

26

私は自分のアプリでこれを修正しました、そしてそれはちょっとイライラしましたが、それはすべてうまくいきました。したがって、これがaddSkipBackupAttributeToItemAtURLのコードです。あなたはそれをチェックしたいかもしれません。5.0.1と5.0も扱います。コードでは5.1以降のみを扱っています。

しかし:

NSString *path-ファイル/folderへのパスがあるとしましょう。:を使用してメソッドを呼び出さないでください。

[NSURL urlWithString:path]; 5.0.1では動作しますが、5.1以降では動作しません。

その代わりuse [NSURL fileURLWithPath:path];

したがって:[MyClass addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:path]];

実際、それがあなたのコードの唯一の問題だと思います。私がリンクした方法を採用すると、下位互換性のみが提供されます。これは素晴らしい追加です。

お役に立てれば。

よろしく、ジョージ

于 2012-06-13T09:47:22.833 に答える
2

私にとっても同じ問題です。また、addSkipBackupAttributeToItemAtURLの呼び出し方法を変更して解決しました。これは正しい方法です。

[MyClass addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:path]];
于 2012-06-15T09:27:35.697 に答える