У меня есть контроллер TableView, который получает заголовок для каждой ячейки. Класс заголовка - это NSobject, который соответствует NSSecureEnocding. Когда я вставляю новый объект, я создаю новый заголовок и использую setTitle: forKey, чтобы сохранить NSData во вложенную папку в папке «Документы» приложения. Затем в ячейке tableView запустите метод: getTitle: forKey.
Я получаю сообщение об ошибке в консоли: getTitleForkey unarchivingError Error Domain = NSCocoaErrorDomain Code = 4864 "*** - [NSKeyedUnarchiver _initForReadingFromData: error: throwLegacyEx]: данные пусты; вы забыли отправить -finishEncoding в NSKeyedArchiver? "
Я немного n00b, особенно в отношении NSKeyedArchiver, но куда я должен отправить -finishEncoding в NSKeyedArchiver
Я посмотрел в документации Apple по NSKeyedArchiver (https://developer.apple.com/documentation/foundation/nskeyedarchiver?language=objc), который говорит мне, что мне нужно вызвать готовое кодирование после того, как я сохранил файл, но я не уверен, где его вызвать.
Ваша помощь очень ценится!
Вот мой архивКод:
NSArray *dirPaths =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *docsDir = dirPaths[0];
NSString *titlesPath = [docsDir stringByAppendingPathComponent:@"/Titles"];
NSString *fileName = [key stringByAppendingString:@".tpt"];
NSString* path = [titlesPath stringByAppendingPathComponent:fileName];
NSData *file;
file = [NSKeyedArchiver
archivedDataWithRootObject:title
requiringSecureCoding:YES
error:nil];
[[NSFileManager defaultManager] createFileAtPath:path
contents:file
attributes:nil];
Я являюсь сообщениями:
unarchivingError Error Domain = NSCocoaErrorDomain Code = 4864 "*** - [NSKeyedUnarchiver _initForReadingFromData: error: throwLegacyExceptions:]: данные пусты; Вы забыли отправить -finishEncoding в NSKeyedArchiver?