【问题标题】:What is the GDTCORStorage class and the unarchivedObjectOfClass?什么是 GDTCORStorage 类和 unarchivedObjectOfClass?
【发布时间】:2019-11-21 13:04:02
【问题描述】:

这是我第一次使用 Firebase,我使用 Xcode 9.4.1 和 Swift 4。我使用 CocoaPods 将 Firebase 安装到我的项目中。

以下是我的代码 sn-ps(和错误):

#pragma mark - GDTCORLifecycleProtocol

- (void)appWillForeground:(GDTCORApplication *)app {
  if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) {
    NSError *error;
    NSData *data = [NSData dataWithContentsOfFile:[GDTCORStorage archivePath]];
    if (data) {
      [NSKeyedUnarchiver unarchivedObjectOfClass:[GDTCORStorage class] fromData:data error:&error];
    }
  } else {
#if !TARGET_OS_MACCATALYST
    [NSKeyedUnarchiver unarchiveObjectWithFile:[GDTCORStorage archivePath]];
#endif
  }
}

对于上面的代码 sn-p 我收到此错误:

No known class method for selector 'unarchivedObjectOfClass:fromData:error:'

同样适用于这段代码:

if (@available(macOS 10.13, iOS 11.0, tvOS 11.0, *)) {
      NSError *error;
      NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self
                                           requiringSecureCoding:YES
                                                           error:&error];
      [data writeToFile:[GDTCORStorage archivePath] atomically:YES];
    } else {
#if !TARGET_OS_MACCATALYST
      [NSKeyedArchiver archiveRootObject:self toFile:[GDTCORStorage archivePath]];
#endif
    }

我收到错误:

No known class method for selector 'archivedDataWithRootObject:requiringSecureCoding:error:'

网上似乎没有很多关于这个问题的资源。除了升级 Xcode,但就我而言,我无法升级我的 Xcode。有什么可以做的吗?

【问题讨论】:

  • 请使用代码完成或阅读documentation(这是在线资源)。 Swift 3+ 方法没有error 参数,它们是throw
  • 但是 Obj-C 类有错误参数 :-) 请给我们提供代码 sn-p... 你试图保存什么样的对象?

标签: ios swift firebase cocoapods


【解决方案1】:

当前版本的 Firebase (6.x) 至少需要 Xcode 10.1。

自 2019 年春季 App Store 开始要求 Xcode 10 以来,情况一直如此。

使用以前版本的 Xcode 的解决方法是更新 Podfile 以指定之前发布的 Firebase 版本。

【讨论】:

猜你喜欢
  • 2019-08-15
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 2021-03-23
  • 2010-10-31
  • 2012-03-02
  • 2017-05-21
  • 1970-01-01
相关资源
最近更新 更多