Я пытаюсь создать приложение с Цель C.Сериализация Цель C не работает
Я пытаюсь сериализовать массив, существующий из объектов, и после его десериализации. Внутри объекта есть методы
(id)initWithCoder:(NSCoder *)coder` and `encodeWithCoder:(NSCoder *)coder
Но, похоже, в "rootObject" пребывания "ноль" в "loadDataFromDisk" -метод
Вот мой код:
#import "Alarm.h"
@implementation Alarm
@synthesize array = _array;
@synthesize time = _time;
@synthesize coder = _coder;
-(id)initWithCoder:(NSCoder *)coder
{
self = [super init];
if(self)
{
_array = [coder decodeObjectForKey:@"array"];
_time = [coder decodeObjectForKey:@"time"];
}
return self;
}
-(void)encodeWithCoder:(NSCoder *)coder
{
[coder encodeObject:self.array forKey:@"array"];
[coder encodeObject:self.time forKey:@"time"];
}
@end
Мои сохраненные и загруженные методы:
-(void)saveDataToDisk
{
NSString * path = [self pathForDataFile];
NSLog(@"Writing alarms to '%@' %lu", path, (unsigned long)array.count);
NSMutableDictionary * rootObject;
rootObject = [NSMutableDictionary dictionary];
[rootObject setValue:array forKey:@"alarms"];
[NSKeyedArchiver archiveRootObject:rootObject toFile:path];
}
-(void)loadDataFromDisk
{
NSString *path = [self pathForDataFile];
NSDictionary *rootObject = [NSMutableDictionary dictionary];
rootObject = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
// "array" is an array with Objects of "Alarm"
array = [rootObject valueForKey:@"alarms"];
NSLog(@"Loaded from : %@ %lu",path ,(unsigned long)array.count);
}
Я надеюсь, что кто-то может помочь мне с этим. Спасибо заранее.
Примечание: '@ synhesize' не требуется в течение нескольких лет. – zaph
Какие объекты находятся в 'массиве'? Вы изучили, что написано в файле? – zaph