gpt4 book ai didi

objective-c - 如何使用 NSSecureCoding 来保证集合类的内容?

转载 作者:行者123 更新时间:2023-12-04 02:43:38 25 4
gpt4 key购买 nike

我有一个类 SGBContainer 的对象它有一个名为 objects 的数组包含类 SGBObject 的对象.目前,它们都实现了 NSCoding 但没有实现 NSSecureCoding。 -initWithCoder:SGBContainer看起来像这样:

- (id)initWithCoder:(NSCoder *)aCoder
{
self = [self init];
if (self)
{
_objects = [aCoder decodeObjectForKey:@"objects"];
}
}

我想切换到使用 NSSecureCoding,据我所知,这意味着将上述更改为:
- (id)initWithCoder:(NSCoder *)aCoder
{
self = [self init];
if (self)
{
_objects = [aCoder decodeObjectOfClass:[NSArray class] forKey:@"objects"];
}
}

...这没什么改进,因为数组的内容将被实例化,无论它们的类是什么。如何确保数组只包含类 SGBObject 的对象没有实例化它们?

最佳答案

尽管文档中并没有说清楚(而且听起来像是一个奇怪的不合语法的方法名称),但这就是 -decodeObjectOfClasses:forKey:做。您会执行以下操作:

NSSet *classes = [NSSet setWithObjects:[NSArray class], [SGBObject class], nil];
_objects = [aCoder decodeObjectOfClasses:classes forKey:@"objects"];

(信用到期:见 NSSecureCoding trouble with collections of custom class)

关于objective-c - 如何使用 NSSecureCoding 来保证集合类的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22384366/

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