'NSKeyedUnarchiveFromData' 不应用于取消归档,并将在未来版本中删除

zom*_*bie 16 nsarchiving swift

我在日志中收到一条消息说

'bundleNamePlaceholder'[8424:100146] [general] 'NSKeyedUnarchiveFromData' 不应用于取消归档,并将在未来版本中删除

我不清楚该消息,但我假设它可能与 CoreData 对象或其内容有关

有没有办法捕捉抛出此消息的原因或可能导致它的原因?

spn*_*nkr 22

苹果NSKeyedUnarchiveFromData在某些时候正在删除,因为默认情况下它不安全。如果您NSKeyedUnarchiveFromData在 coredata 中使用存储可转换值,它将变得不可读。

https://www.kairadiagne.com/2020/01/13/nssecurecoding-and-transformable-properties-in-core-data.html

https://developer.apple.com/forums/thread/107533


小智 8

在我的情况下,问题是在TransformableCoreData中使用类型来保存字符串数组。默认情况下,CoreData 使用NSKeyedUnarchiver而不是NSSecureUnarchiveFromData转换器。所以换变压器解决了这个问题。

在此处输入图片说明


Lut*_*utz 7

要找出导致这些日志消息的原因,请尝试添加符号断点

+[NSKeyedUnarchiver unarchiveObjectWithData:],

+[NSKeyedUnarchiver unarchiveTopLevelObjectWithData:error:], 和

+[NSKeyedUnarchiver unarchiveObjectWithFile:]

这有助于我找到罪魁祸首。

  • 就我而言,问题是因为我忘记为 xcdatamodel 中的可转换字段设置数据类型和值转换器。 (2认同)
  • @Fattie是的,我的意思是“自定义类”字段。 (2认同)