Я пытаюсь декодировать свой объект из NSUserdefaults. Если я отлаживаю функцию initWithCoder, она выполняется нормально, но когда я смотрю на мой объект, который был декодирован, все свойства равны нулю.Невозможно декодировать объект из NSUserDefaults
Моя initWithCoder функция:
-(id)initWithCoder:(NSCoder *)decoder
{
self = [super init];
if (self != nil)
{
//decode the properties
self.SGTIN = [decoder decodeObjectForKey:@"SGTIN"];
self.GTIN = [decoder decodeObjectForKey:@"GTIN"];
self.SerialNumber = [decoder decodeObjectForKey:@"SerialNumber"];
self.Product = [decoder decodeObjectForKey:@"Product"];
self.DateTimeScanned = [decoder decodeObjectForKey:@"DateTimeScanned"];
self.Loaded = [decoder decodeBoolForKey:@"Loaded"];
}
return self;
}
Мой код для декодирования объекта: NSDictionary * tempDictionary = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];
NSArray *tempArray =[tempDictionary allKeys];
for (NSString *key in tempArray){
if ([key length] > 8) {
if ([[key substringToIndex:8] isEqualToString:@"INXITEM:"]) {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *encodedObject = [defaults objectForKey:key];
ScannedItem *SITemp = (ScannedItem *)[NSKeyedUnarchiver unarchiveObjectWithData:encodedObject];
}
}
}
Просто нашел ...
Это потому, что свойство Loaded (BOOL) новое свойство и объект, который был сохранен в NSUserDefaults не содержит это имущество.
прочистила NSUserDefaults и теперь все в порядке ...
Что такое суперкласс 'ScannedItem'. Когда и как вы кодируете экземпляры? Вы правильно использовали кодировку? – Wain