NSURLIsExcludedFromBackupKey нельзя установить правильно

Я пытаюсь предотвратить создание целой папки с помощью itunes. Я следил за Техническим отчетом http://developer.apple.com/library/ios/#qa/qa1719/_index.html Но кажется, что falg - это каждый раз ноль. Я использую IOS 5.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;

}

Ответы

Ответ 1

Я только что исправил это в своем приложении, и, хотя это было расстраивать, все закончилось тем, что отлично работало. Итак, вот код для addSkipBackupAttributeToItemAtURL. Вы можете проверить это. Это относится и к 5.0.1 и 5.0. Вы используете только 5.1 и выше в своем коде.

НО:

Скажем, у вас есть путь NSString * - путь к вашему файлу/папке, не вызывать метод с:

[NSURL urlWithString:path]; Он будет работать с 5.0.1, но не на 5.1 и выше.

Вместо use [NSURL fileURLWithPath:path];

Итак: [MyClass addSkipBackupAttributeToItemAtURL: [NSURL fileURLWithPath: путь]];

На самом деле, я думаю, что это единственная проблема с вашим кодом. Принимая метод, с которым я связан, обеспечит только обратную совместимость, что является отличным дополнением.

Надеюсь, что это поможет.

С уважением, Джордж

Ответ 2

Такая же проблема для меня. Я также решил это изменить способ, которым я называл addSkipBackupAttributeToItemAtURL Это правильный способ:

[MyClass addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:path]];