如何在NSUserDefault中保存我的数据类型? [英] How to save My Data Type in NSUserDefault?

查看:37
本文介绍了如何在NSUserDefault中保存我的数据类型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将我的数据类型临时保存在NSUserDefault中.稍后将这些数据拉回去.

I want to save My Data Type temporary in NSUserDefault. this data later pull back.

我尝试遵循以下代码.

MyObject *myObject = [[MyObject alloc] init];

[[NSUserDefaults standardUserDefaults] setObject:myObject forKey:@"kMyObject"];

但是控制台显示以下消息给我发短信.

but console show to text me following message.

-[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.

I can ignore these messages and to force pull out from NSUserDefault.

MyObject *getObject = [[NSUserDefaults standardUserDefaults] objectForKey:@"kMyObject"]; 

但是,不放弃原始数据.(我已经检查了NSLog,返回Null.)

but, not give back original data. (I've Checked the NSLog, returns Null.)

如何解决这个问题?我只喜欢保存到NSUserDefaults.不推荐我使用CoreData.

How to solve this problem? I only prefer save to NSUserDefaults. not recommended to me using CoreData.

推荐答案

许多开发人员都建议NSKeyedArchiver利用这一概念.但是它必须实现NSCopy NSCoding协议,因为某些协议可能很复杂.不仅如此,还有一种更简单的方法.请参考以下代码.

Many Developer recommend to NSKeyedArchiver Taking advantage of the concept. but it must implement protocols to NSCopy NSCoding and because some can be complex. More than that there is an easier way. refer a following code.

保存

    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];

这篇关于如何在NSUserDefault中保存我的数据类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆