【问题标题】:Xcode 12: How to fix the error 'archiveRootObject:toFile:' is deprecatedXcode 12:如何修复错误“archiveRootObject:toFile:”已弃用
【发布时间】:2020-06-24 21:19:10
【问题描述】:

我正在使用 Xcode 12 的测试版(版本 12.0 beta (12A6159))。我的项目使用 Firebase。 当我尝试构建它时,会出现一些错误,例如:

'archiveRootObject:toFile:' is deprecated: first deprecated in iOS 12.0 - Use +archivedDataWithRootObject:requiringSecureCoding:error: and -writeToURL:options:error: instead

Xcode 告诉我在“GoogleDataTransport”文件夹中解决此问题,在此行的文件中:

[NSKeyedArchiver archiveRootObject:self toFile:[GDTCORStorage archivePath]];

我试图愚蠢地按照错误信息告诉我的去做,所以我开始写错误所说的内容。我录了:

[NSKeyedArchiver archivedDataWithRootObject:<#(nonnull id)#> requiringSecureCoding:<#(BOOL)#> error:<#(NSError *__autoreleasing  _Nullable * _Nullable)#>];

我不知道我应该写什么来完成空白。 有人知道吗?

【问题讨论】:

  • 我认为您需要将 Firebase iOS SDK 更新到最新版本,因为这已在不久前修复。您不必直接修改 Firebase 源代码中的代码。
  • 对于可能的最小实现(未经测试):NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self requiringSecureCoding:NO error:nil]; NSURL *url = [NSURL fileURLWithPath:[GDTCORStorage archivePath]]; [data writeToURL:url options:0 error:nil];但您最好采用安全编码协议并进行一些错误处理。
  • 感谢您的回答。两种解决方案都有效,但它们总是从 GoogleDataTransportCCTSupport 文件夹中给我带来新的错误(很多)。我认为 Google 必须为新的 Xcode 12 更新 Firebase。
  • 更新 firebase pod。在我的情况下,它在更新 pod 文件后工作。

标签: firebase xcode12


【解决方案1】:

即使我们将 Firebase SDK 更新到最新版本,仍然会出现错误(使用 Xcode 12 beta (12A6159))。 我将此问题报告给 Firebase 支持。他们告诉我这看起来像是 CocoaPods 的问题。 但是,他们给了我workaround

当我有更多信息时,我会更新这篇文章。

【讨论】:

  • 您找到问题的解决方案了吗?已经好几个月了......提前谢谢
  • @willscarter 我忘了在这篇文章中分享“解决方案”,谢谢。由于我更新了 pod 文件,我不再有这个问题......这就是我所知道的。如果你仍然有这个问题,你应该检查我分享的解决方法,它运行良好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-19
  • 1970-01-01
  • 2022-10-22
  • 2016-11-03
  • 2020-02-02
  • 1970-01-01
  • 2015-12-25
相关资源
最近更新 更多