iPhone: где сохранять данные пользователей, когда не требуется резервное копирование с помощью icloud - PullRequest
0 голосов
/ 03 января 2012

Привет, я собираюсь отправить свое приложение в магазин приложений. Я прочитал, что есть несколько изменений в рекомендациях по хранению данных Apple, поскольку введено хранилище iCloud. Я сохранял все данные пользователя в каталоге документов приложений, поскольку содержимое каталога документов автоматически создаются резервные копии в iCould, если включено, я думаю, чтобы переместить их в каталог библиотеки приложений. Разрешено ли сохранять содержимое в библиотеке с учетом рекомендаций Apple по хранению данных? Если нет, где сохранить данные? Пожалуйста помоги.

Ответы [ 2 ]

0 голосов
/ 03 января 2012

Вы можете поместить данные в папку «Документы», но перед сохранением в папке «Документы» создайте папку в папке «Документы», предположим, что это временно.Затем напишите следующий код, чтобы не создавать резервные копии в iCloud.

[[NSFileManager defaultManager] createDirectoryAtPath:temp 
                          withIntermediateDirectories:NO
                                           attributes:nil
                                                error:nil];
NSURL *dbURLPath = [NSURL URLWithString:temp];
[self addSkipBackupAttributeToItemAtURL:dbURLPath]; 

Также реализуйте метод addSkipBackupAttributeToItemAtURL, не забудьте включить

#include <sys/xattr.h>

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL {
    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;
}
0 голосов
/ 03 января 2012

У вас есть два основных варианта:

  • Поместите ваши файлы в каталог Cache, тогда они не будут сохранены в резервной копии, и Apple не отклонит ваше приложение.Однако, когда iOS 5 становится мало места, она может удалить все находящиеся там файлы
  • Поместить файлы в документы, но пометить их, чтобы они не создавали резервные копии.Есть техника ( QA1719 ) о том, как это сделать.Это работает только в iOS 5.0.1 и более поздних версиях
...