【发布时间】:2019-09-21 18:39:34
【问题描述】:
我的应用目前使用这个已弃用的功能:
id unarchivedObject=[NSKeyedUnarchiver unarchiveObjectWithData:codedData];
if([unarchivedObject isKindOfClass:[NSDictionary class]]){
// currently returns TRUE when reading existing user data.
}
为了更新,我已经转换成这个:
id unarchivedObject=[NSKeyedUnarchiver unarchivedObjectOfClass:[NSDictionary class] fromData:codedData error:nil];
if([unarchivedObject isKindOfClass:[NSDictionary class]]){
// currently returns FALSE when reading existing user data.
}
数据最初是这样编码的:
-(void)encodeWithCoder:(NSCoder*)encoder{
[encoder encodeObject:text forKey:@"text"];
}
-(instancetype)initWithCoder:(NSCoder*)decoder{
if(self=[super init]){
text=[decoder decodeObjectForKey:@"text"];
}
什么可能导致 IF 语句使用较新的代码返回 FALSE?
请注意,我主要关心的是在弃用存档功能之前读取存储的现有数据。简单地更改为较新的功能并不能解决问题。
【问题讨论】:
标签: ios objective-c nscoder nsarchiving