24

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

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

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

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

4

5 回答 5

25

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

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

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

于 2020-07-01T06:35:17.397 回答
20

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

在此处输入图像描述

于 2021-04-22T05:58:37.380 回答
12

要找出导致这些日志消息的原因,请尝试为

+[NSKeyedUnarchiver unarchiveObjectWithData:],

+[NSKeyedUnarchiver unarchiveTopLevelObjectWithData:error:], 和

+[NSKeyedUnarchiver unarchiveObjectWithFile:]

这帮助我找到了罪魁祸首。

于 2021-02-09T09:11:46.330 回答
0

通常这与核心数据可转换属性有关,但在我的情况下,这也是由一个外部库引起的,该库NSValueTransformer.valueTransformerNames用于迭代运行时可用的所有值转换器类。这也导致了日志中的相同错误,并且此处其他答案中给出的符号断点没有捕获它们。因此,如果您找不到拥有此日志的原因,您可能还想NSValueTransformer在代码中搜索并检查某处是否没有类似的问题。

于 2021-12-16T07:04:55.530 回答
0

对我来说,问题来自 GoogleAnalytics 框架,多亏了@Lutz,我才能弄清楚。对于那些面临 GA 问题的人,请使用更新的 sdk,这个问题似乎已经解决了 GA SDK

于 2021-12-28T17:56:45.840 回答