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]];