【问题标题】:Extension initializer is inaccessible due to 'internal' protection level swift 4由于“内部”保护级别 swift 4,扩展初始化程序无法访问
【发布时间】:2018-09-12 13:19:58
【问题描述】:

我在框架内的扩展中有一个便利初始化程序。 我想在我的项目的另一个扩展中使用它。 它授予我可以访问的所有内容的公共访问权限,但编译器一直说“由于'内部'保护级别,初始化程序无法访问”...

这是我在框架中的扩展:

public extension UIColor {
    public convenience init(hex: Int) {
        self.init(red:(hex >> 16) & 0xff, green:(hex >> 8) & 0xff, blue:hex & 0xff)
    }
}

这是我在项目中的扩展:

import myFramework

extension UIColor {
    class var backgroundGrey: UIColor {
        return UIColor(hex: 0xe3e8eb)
    }
}

错误是当我调用 UIColor(hex) 时。

你知道这里有什么问题吗?

编辑:我添加了框架导入

【问题讨论】:

  • 您是否将框架导入到调用它的文件中?
  • 是的,抱歉,我会更新问题
  • 一般来说这里的答案是清理项目。如果这不起作用,请删除 DerivedData。如果这不起作用,那么开始简化项目,只做这件事(导入框架并访问扩展),因为项目中有其他东西在干扰。
  • @RobNapier。我不得不删除派生数据!我很久没有这样做了,我忘记了这可以解决每个 Xcode 问题以及重新启动 Xcode 并清理项目。您可以发表您的评论作为答案,以便我打勾吗?

标签: ios swift extension-methods access-levels


【解决方案1】:

通常这里的答案是清理项目。如果这不起作用,请删除 DerivedData。如果这不起作用,那么开始简化项目,只做这件事(导入框架并访问扩展),因为项目中有其他东西在干扰。

【讨论】:

    猜你喜欢
    • 2018-08-25
    • 1970-01-01
    • 2017-04-13
    • 2017-12-23
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    相关资源
    最近更新 更多