NSURLIsExcludedFromBackupKey не может быть установлен правильно

Я пытаюсь предотвратить копирование всей папки itunes. Я следил за Техническим отчетом http://developer.apple.com/library/ios/ Но кажется, что falg - это всегда ноль. Я использую IOS 5.1, опробованный в симуляторе и на устройстве. Но ничего не помогает. Методы каждый раз возвращают "success", но флаг все еще равен нулю.

+ (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;

}

2 ответа

Решение

Я просто исправил это в своем приложении, и, хотя это было немного разочаровывающе, все получилось прекрасно. Итак, вот код для 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: путь]];

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

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

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

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

[MyClass addSkipBackupAttributeToItemAtURL:[NSURL fileURLWithPath:path]];
Другие вопросы по тегам