2012-05-28 7 views
4

Недавно мое приложение iOS было отклонено, поскольку приложение хранит данные в документах, поэтому оно поддерживается iCloud, это не разрешено, так как данные загружаются с сервера.Все еще резервные копии для iCloud, даже если addSkipBackupAttributeToItemAtURL реализован?

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

Но даже если я использую addSkipBackupAttributeToItemAtURL, он по-прежнему отображается как резервная копия iCloud.

Я ориентируюсь только на 5.1, так что это не проблема с версией.

Я добавил затронутой здесь код ниже:

NSString *newPath = [NSMutableString stringWithFormat:@"%@/Library/Application Support/", NSHomeDirectory()]; 

    if (![[NSFileManager defaultManager] fileExistsAtPath:newPath]) //Does directory already exist? 
    { 
     if (![[NSFileManager defaultManager] createDirectoryAtPath:newPath 
             withIntermediateDirectories:NO 
                 attributes:nil 
                  error:&error]) 
     { 
      NSLog(@"Create directory error: %@", error); 
     } 

    } 

    NSString *guidesPath = [newPath stringByAppendingPathComponent:@"/Guides"]; 
    if (![[NSFileManager defaultManager] fileExistsAtPath:guidesPath]) //Does directory already exist? 
    { 
     if (![[NSFileManager defaultManager] createDirectoryAtPath:guidesPath 
             withIntermediateDirectories:NO 
                 attributes:nil 
                  error:&error]) 
     { 
      NSLog(@"Create directory error: %@", error); 
     } 

    } 

    NSString *dataPath = [guidesPath stringByAppendingPathComponent:dbName]; 

    if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]) 
    { 
     if (![[NSFileManager defaultManager] createDirectoryAtPath:dataPath 
             withIntermediateDirectories:NO 
                 attributes:nil 
                  error:&error]) 
     { 
      NSLog(@"Create directory error: %@", error); 
     } 

    } 

    NSString *newGuidesPath = [dataPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    NSURL *guidesURL = [NSURL URLWithString:newGuidesPath]; 
    [self addSkipBackupAttributeToItemAtURL:guidesURL]; 

    NSString* path = [dataPath stringByAppendingPathComponent: 
         [NSString stringWithString: finalName] ]; 
    if (![fileManager fileExistsAtPath:path]) { 
     [myData writeToFile:path atomically:YES]; 
     NSString *docFile = [dataPath stringByAppendingPathComponent: @"guideid.txt"]; 
     [[guideID dataUsingEncoding:NSUTF8StringEncoding] writeToFile:docFile atomically:NO]; 
     DLog(@"Saved database here:%@", path); 
    }else{ 
     DLog(@"Already exists, no need to copy"); 
    } 

} 

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL 
{ 


assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]); 

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

ответ

9

Фактически нашел решение, Я закодировал URL-адрес, который не был необходим. Просто добавили эту папку

NSURL *guidesURL = [NSURL fileURLWithPath:guidesPath]; 
    [guidesURL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:NULL]; 

И пропустил метод исключения, просто помечается его в коде, который, кажется, работает.

0

Пробовали ли вы создать новую резервную копию на устройстве из настроек ICloud?

+0

это фактически решил мой проблема. – user3687