gpt4 book ai didi

ios - 在 NSUserDefaults 中保存继承的对象

转载 作者:行者123 更新时间:2023-11-29 11:36:28 26 4
gpt4 key购买 nike

我正在使用一个继承自 NSObject 的类“userDC”。此对象正确保存在用户默认值中,没有任何问题。
但是现在我又创建了一个类,它是从 userDC 继承的,叫做“appUserDC”。
当我尝试将数据保存在 appUserDC 及其父对象中时,它已被正确保存,但是当我尝试将其保存在存档中并尝试将其取回时,它不会返回任何保存在 userDC 属性中的数据。

感谢任何帮助。

谢谢。

最佳答案

在使用 NSCopying 协议(protocol)方法创建对象类时 -initWithCoder:encodeWithCoder:

从您要保存对象的类中使用 - NSKeyedArchiverarchivedDataWithRootObject 方法,这将返回 Data 对象。

检索对象后,您必须取消存档 - NSKeyedUnarchiverunarchiveObjectWithData 方法。

Objective-C 示例 -

AppuserDC

在执行.m文件中-

- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:self.myProperty forKey:@"myProperty"];
}

- (id)initWithCoder:(NSCoder *)decoder
{
if((self = [super initWithCoder:decoder]))
{
self. myProperty = [decoder decodeObjectForKey:@"myProperty"];
}
return self;
}

保存对象时 -

- (void)saveMyObject:(AppuserDC *)user
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *myEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:user];
[defaults setObject:myEncodedObject forKey:@"user"];
[defaults synchronize];
}

并检索对象 -

- (id)loadUserObject
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *myEncodedObject = [defaults objectForKey:@"user"];

id obj = [NSKeyedUnarchiver unarchiveObjectWithData:myEncodedObject];
return obj;
}

关于ios - 在 NSUserDefaults 中保存继承的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49006207/

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