gpt4 book ai didi

ios - 使用 NSKeyedUnarchiver 加载数据时应用程序崩溃

转载 作者:行者123 更新时间:2023-11-29 13:17:03 32 4
gpt4 key购买 nike

我用 NSKeyArchiver 将账户保存到一个文件中,但是当我尝试加载它们时,我的应用程序崩溃了,说账户没有实现 initWithCoder: 即使它实现了并且它也符合 NSCoding:

-[Account initWithCoder:]: unrecognized selector sent to instance 0xa947a00

账户.m

 - (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super init];
if (self) {
_name = [aDecoder decodeObjectForKey:@"name"];
_accessToken = [aDecoder decodeObjectForKey:@"accessToken"];
_refreshToken = [aDecoder decodeObjectForKey:@"refreshToken"];
_selected = [aDecoder decodeBoolForKey:@"selected"];
lastUpdate = [aDecoder decodeObjectForKey:@"lastUpdate"];
}
return self;
}

- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:_name forKey:@"name"];
[aCoder encodeObject:_accessToken forKey:@"accessToken"];
[aCoder encodeObject:_refreshToken forKey:@"refreshToken"];
[aCoder encodeBool:_selected forKey:@"selected"];
[aCoder encodeObject:lastUpdate forKey:@"lastUpdate"];
}

AccountStore.m在这里我加载它们:

NSString *path = [[self archivePath] stringByAppendingPathComponent:@"accounts.archive"];
accounts = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
if (!accounts) {
accounts = [[NSMutableArray alloc] init];
}

另外我应该提到它已经工作了,但是从一秒到另一秒它不再起作用了。我检查了 NSKeyedArchiver 是否保存正确:它确实保存了。

最佳答案

问题可能是名称冲突。

Apple 的 Message.framework 包含一个名为 Account 的类。虽然您永远不会直接链接此私有(private)框架,但它可以从其他 Apple 框架间接加载,例如 MessageUI.framework。我可以想象你最近将这个框架添加到你的项目中。这将是您的错误首次出现的时间。

唯一的解决方案是重命名您的 Account 类。实际上有quite a lot of unprefixed classes在 Apple 的框架中,所以你 should use a name prefix无论如何。

并且您应该按照@bbum here 的建议提交错误.

关于ios - 使用 NSKeyedUnarchiver 加载数据时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15481732/

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