gpt4 book ai didi

iphone - 如何在 NSUserDefault 中保存我的数据类型?

转载 作者:行者123 更新时间:2023-12-03 21:03:19 25 4
gpt4 key购买 nike

我想将我的数据类型临时保存在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com