2012-04-27 4 views
2

Приложение для iPhone содержит около 500 МБ данных. и приложение будет использовать эти данные в автономном режиме. Поэтому я помещаю папку, чтобы не копировать/копировать в iTunes. поэтому я использую ниже URL-адрес: https://gist.github.com/1999985«NSURLIsExcludedFromBackupKey» undeclared

Но он говорит, что «NSURLIsExcludedFromBackupKey» не объявлен. и я также попытался использовать https://developer.apple.com/library/ios/#qa/qa1719/_index.html , но я всегда возвращаю false.

Итак, пожалуйста, дайте мне знать, как это будет работать?

Thx

+0

вам нужно IOS 5.1 SDK для этого работать – Felix

ответ

5

NSURLIsExcludedFromBackupKey должен компилироваться на SDK 5.1 +.
Поскольку ключ недоступен для 5.0, следующий фрагмент может действовать как обходной путь.

if (SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(@"5.0.1")) 
{ 
    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; 
}   
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"5.1")) 
{ 
    NSError *error = nil; 
    //[URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error]; 
    [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:@"NSURLIsExcludedFromBackupKey" error:&error]; 
    return error == nil; 
} 
+0

я уже использовал этот код, но мое заявление отклонил. Я храню данные в папке документов ... у вас есть идея? –

+0

Возможно, вам придется прочитать рекомендации по хранению, чтобы убедиться, что вы выбрали нужную папку для хранения. Я не знаю, какие данные вы сохраняете. Возможно, попробуйте «Библиотека/Кэш» вместо папки «Документы». Лучше объясните здесь http://www.saumitrabhave.com/2011/11/air-ios-solving-apps-must-follow-ios.html – danfelabs

+0

Этот код не работает на устройствах iOS 5.0! Даже если ваш базовый SDK равен 5.1, 'NSURLIsExcludedFromBackupKey' не является слабосвязанным и может привести к сбою вашего приложения в iOS <5.1телефоне! Если у кого-то есть решение, я был бы рад узнать об этом. – Martin

2

я получил ошибку на использовании «SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO», чтобы проверить версию операционной системы, мои приложения являются разработка в старых инструментах ОС. так я изменить к этому, заменить на «SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO»

double currSysVer =[[[UIDevice currentDevice] systemVersion] doubleValue]; 
if (currSysVer>=5.1) { 
    NSError *error = nil; 
    //[URL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error]; 
    [URL setResourceValue:[NSNumber numberWithBool:YES] forKey:@"NSURLIsExcludedFromBackupKey" error:&error]; 
    return error == nil; 
}else{ 

    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; 

}