Я принял менее благоприятное решение использовать struct в своем приложении для iOS.Теперь я также сталкиваюсь с этой проблемой, когда не могу легко сохранить структуру (которая содержит около 30 переменных) в NSUserDefaults.
После попытки многих решений, представленных на SO и других сайтах, она не работает для меня.Итак, в конце концов я решил создать простой метод для преобразования структуры в NSMutableDictionary.
-(NSMutableDictionary *)structToDictionary:(StructPictures) dat {
NSArray *values = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:dat.bgOpacity],
[NSNumber numberWithInt:dat.bgType], // 1= general,
[NSNumber numberWithFloat:dat.glowAmt],
[NSNumber numberWithInt:dat.textureNum],
[NSNumber numberWithInt:dat.patternNum],
[NSNumber numberWithInt:dat.patternType],
[NSNumber numberWithFloat:dat.patternHue],
[NSNumber numberWithFloat:dat.textureSizer],
[NSNumber numberWithInt:dat.stickerR],
[NSNumber numberWithInt:dat.stickerG],
[NSNumber numberWithInt:dat.stickerB]
, nil];
NSArray *keys = [NSArray arrayWithObjects:
@"bgOpacity",
@"bgType",
@"glowAmt",
@"textureNum",
@"patternNum",
@"patternType",
@"patternHue",
@"textureSizer",
@"stickerR",
@"stickerG",
@"stickerB",
nil];
NSMutableDictionary *res = [[NSMutableDictionary alloc] initWithObjects:values forKeys:keys];
return res;
}
StructPictures - это имя моей структуры (custom).Надеюсь, что это даст альтернативное решение для сохранения структуры в NSUserDefaults.