【发布时间】: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 文件后工作。