У меня есть объект, который имеет NSMutableArray пользовательских UIViews, UIImage и пару строк.
Я беру этот объект и помещаю его в словарь. Словарь попадает в NSData, затем я делаю это:
NSString *path;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
path = [paths objectAtIndex:0];
NSString *fileName = DATA;
path = [path stringByAppendingPathComponent:fileName];
NSMutableData *data = [[NSMutableData alloc]init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];
[archiver encodeObject:dict forKey: DATA];
[archiver finishEncoding];
[[NSFileManager defaultManager] createFileAtPath:path
contents:data
attributes:nil];
Сохраняется успешно. Когда я пытаюсь загрузить данные, файловая система показывает, что мой объект был сохранен, но когда я пытаюсь декодировать, он говорит, что мои данные равны NULL.
Вот мой код декодирования:
-(NSDictionary*)loadData
{
NSString *path;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
path = [paths objectAtIndex:0];
NSArray *directoryContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];
if (directoryContent != nil && [directoryContent count] > 0)
{
NSLog(@"CONTENT COUNT: %d",[directoryContent count]);
NSString *fileName = DATA;
path = [path stringByAppendingPathComponent:fileName];
NSData *data = [[NSMutableData alloc]initWithContentsOfFile:[directoryContent objectAtIndex:0]];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSDictionary *dict = [unarchiver decodeObjectForKey: DATA];
[unarchiver finishDecoding];
return dict;
}
else
return nil;
}
Мое приложение позволяет пользователю перемещать несколько представлений, и я просто пытаюсь найти простой способ хранения кадров и преобразований представлений без необходимости извлекать каждое значение типа int / string. Я также надеялся, что мне не придется разбивать мой UIImage на байтовый массив, а затем перезагружать его обратно в UIImage.
Я делаю сумасшедшие вещи здесь, надеясь на функциональность, которая невозможна?
Является ли мой единственный вариант разбивать каждый UIView в массиве на отдельные значения для преобразований, фреймов и т. Д.?
Мысли