NSKeyedArchiver работает на симуляторе, но не работает на устройстве tvOS - PullRequest
0 голосов
/ 26 января 2019

Я архивирую объект в файл - на симуляторе он работает отлично, но на устройстве tvOS (Apple TV) - нет (другими словами -(BOOL)archiveRootObject:toFile: возвращает смешное NO):

static NSString * _DocumentsDirectory() {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES);
    return paths[0];
}

и

NSString *fullPath = [_DocumentsDirectory() stringByAppendingPathComponent:filename];
[NSKeyedArchiver archiveRootObject:obj toFile:fullPath];

, где filename = @"foo.data" и obj соответствует NSCoding.

Я пробовал разные способы соединить путь и разные каталоги, но результат один и тот же. Единственная мысль, которая у меня есть, это то, что мне может потребоваться какое-то разрешение на запись.

Есть идеи?

1 Ответ

0 голосов
/ 30 января 2019

После небольшого исследования я обнаружил, что Apple может хранить данные в приложениях tvOS единственными способами:

enter image description here

Поэтому я решил использовать каталог Cache (который очищается, только если требуется место) для данных, которые я могу в конечном итоге загрузить повторно, и NSUserDefaults для небольших данных, к которым мне всегда нужно обращаться локально.

...