作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将我的数据类型临时保存在 NSUserDefault 中。这个数据稍后会回调。
我尝试遵循代码。
MyObject *myObject = [[MyObject alloc] init];
[[NSUserDefaults standardUserDefaults] setObject:myObject forKey:@"kMyObject"];
但控制台显示给我发短信以下消息。
-[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '<MyObject: 0x4aadb0>' of class 'MyObject'. Note that dictionaries and arrays in property lists must also contain only property values.
我可以忽略这些消息并强制从 NSUserDefault 中退出。
MyObject *getObject = [[NSUserDefaults standardUserDefaults] objectForKey:@"kMyObject"];
但是,不返回原始数据。 (我已经检查了 NSLog,返回 Null。)
如何解决这个问题?我只喜欢保存到 NSUserDefaults。不推荐我使用 CoreData。
最佳答案
许多开发人员推荐 NSKeyedArchiver 利用这个概念。但它必须实现 NSCopy NSCoding 协议(protocol),因为有些协议(protocol)可能很复杂。不仅如此,还有一种更简单的方法。引用以下代码。
保存
MyObject *myObject = [[MyObject alloc] init];
NSData *myObjectData = [NSData dataWithBytes:(void *)&myObject length:sizeof(myObject)];
[[NSUserDefaults standardUserDefaults] setObject:myObjectData forKey:@"kMyObjectData"];
<小时/>
加载
NSData *getData = [[NSData alloc] initWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"kMyObjectData"]];
MyObject *getObject;
[getData getBytes:&getObject];
关于iphone - 如何在 NSUserDefault 中保存我的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11788408/
我是一名优秀的程序员,十分优秀!