[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '<UIImage: 0x72999e0>' of class 'UIImage'. Note that dictionaries and arrays in property lists must also contain only property values.
NSUserDefault can only store property listed values. 只能保存指定的类型比如NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary如果你要保存其他类型或者自定义类型需要用到archiver. 自己需要写encode和decode两个method
iphone在本地存储数据有三种方式:数据库、NSUserDefaults和文件。
NSUserDefaults用于存储数据量较小的数据,比如用户配置。
但并不是所有的数据类型都可以存储在其中,NSUserDefaults只支持以下几种数据类型:NSString, NSNumber, NSDate, NSArray, NSDictionary。而且,自定义的对象放在如NSArray中,再存储在NSUserDefaults中也是不行的(亲测,确实是的)。
一、将数据存储到NSUserDefaults:
- NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
- [userDefaults setBool:_theSwitch.on forKey:@"switchValue"];
- [userDefaults setObject:_textField.text forKey:@"inputValue"];
二、读取NSUserDefaults中的数据: