我在我的iOS应用程序中做出了不太理想的决定,使用了struct。现在我也面临这样一个问题,即我无法轻松地将包含约30个变量的结构体保存到NSUserDefaults中。
在尝试了SO和其他网站提供的许多解决方案后,对我来说都没有很好地工作。因此,最终我决定创建一个简单的方法将结构体转换为NSMutableDictionary。
-(NSMutableDictionary *)structToDictionary:(StructPictures) dat {
NSArray *values = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:dat.bgOpacity],
[NSNumber numberWithInt:dat.bgType],
[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是我的结构体(自定义)的名称。
希望这能提供一种将结构体保存到NSUserDefaults的替代解决方案。