【问题标题】:Disambiguating local class from Firebase renamed class从 Firebase 重命名类中消除本地类的歧义
【发布时间】:2018-04-24 20:21:00
【问题描述】:

我正在编写一个使用 Firebase 的 Swift 3 应用程序。我创建了自己的课程User。我想同时使用该类和 Firebase 的 User 类。 Firebase 的 User 类曾经被称为 FIRUser,但在 Firebase 4 中被重命名(即 FIRUser.hFIR_SWIFT_NAME(User))。

现在我不知道如何独立使用它们。每当我使用User 时,我的代码都会认为我在谈论我的User 类(这是有道理的)。但是当我不能再使用FIRUser 时,如何引用Firebase 的User 类?

【问题讨论】:

    标签: ios swift firebase swift3 firebase-authentication


    【解决方案1】:

    我在升级到 Firebase 4 时遇到了完全相同的问题;)我做了 MacLean answer 已经建议的事情,但选择了 项目范围 解决方案。 p>

    Firebase.swift 文件中,我添加了以下typealias

    // 
    // Firebase.swift
    //
    import FirebaseAuth
    
    /// Class `FirebaseAuth.User` conflicts with `MyApp.User`.
    typealias AuthUser = FirebaseAuth.User
    

    然后,在项目的其他地方,我在使用 Firebase 类时只使用 AuthUser,而我自己的类型只使用 User。以上typealias 具有internal 可见性,因此可在您的应用代码中使用。

    根据您的代码库大小,这可能比使用 per-file 解决方案提供更好的权衡。

    【讨论】:

      【解决方案2】:

      您实际上可以只使用import class User,这将使文件中所有将来对User 的引用都指向您导入的那个。

      如果您想更改其中一个类在单个文件中的调用方式,您也可以在其中一个上使用typealias

      不过,一般来说,最好将您的 User 类重命名为更具体的名称,但遗憾的是:

      【讨论】:

      • 是的,我就是这么想的。如果我想导入 FIRUser 类并在整个文件中使用它,我应该导入什么?我无法导入 FIRUser,因为它不再存在。它在哪里?
      • import class FirebaseAuth.FIRUser 。如果您查看它,您会发现他们刚刚指定了 User,因为它是 Swift 名称,带有 FIR_SWIFT_NAME(User)
      猜你喜欢
      • 1970-01-01
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      相关资源
      最近更新 更多