gpt4 book ai didi

objective-c - NSCoding协议(protocol)问题

转载 作者:太空狗 更新时间:2023-10-30 04:00:43 27 4
gpt4 key购买 nike

我想将归档 (NSCoding) 协议(protocol)添加到我的模型类中,然后我实现了 encodeWithCoder:(NSCoder*)coderinitWithCoder:(NSCoder*)coder。 MyModelClass 有 2 个实例变量(NSString 和 NSImage),所以我使用 encodeObject:(id)object forKey:(NSString*)string 方法对对象加上特定键的值进行编码。但我一直收到错误:

*** -encodeObject:forKey: 仅为抽象类定义。定义-[NSArchiver encodeObject:forKey:]!

这是我的 NSCoding 方法代码:

- (id)initWithCoder:(NSCoder *)coder {
[super init];
mainPath = [[coder decodeObjectForKey:@"mainPath"] retain];
icon = [[coder decodeObjectForKey:@"icon"] retain];

return self;
}

- (void)encodeWithCoder:(NSCoder *)coder {
NSLog(@"encode with coder is called");
[coder encodeObject:mainPath forKey:@"mainPath"];
[coder encodeObject:icon forKey:@"icon"];

}

这就是我在我的 Controller 类中调用它们的方式:

id object = [assetArray objectAtIndex: [[rows lastObject] intValue]];

if ([object isKindOfClass:[ItemAssetModel class]])
NSLog(@"object is correct");
else
return NO;

NSData *data = [NSArchiver archivedDataWithRootObject: object];

如果我将 encodeObject:(id)obj forKey:(NSString*)str 更改为 encodeObject:(id)obj,错误将停止,但结果即,归档数据不复制实例变量值(cmiiw)。我错过了什么吗?

谢谢。赫布语

最佳答案

尝试使用 NSKeyedArchiver 而不是 NSArchiver。

关于objective-c - NSCoding协议(protocol)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3892578/

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