【问题标题】:Import Swift framework in Swift: "Use of undeclared type 'MyCustomView'"在 Swift 中导入 Swift 框架:“使用未声明的类型‘MyCustomView’”
【发布时间】:2014-09-17 07:04:28
【问题描述】:

我有一个 Swift 项目,我在其中添加了一个带有 UIView 自定义子类的框架目标,因此我可以在 Xcode 6 的 Interface Builder 中使用新的实时视图。但是当我尝试在我的 @ 中添加一个 @IBOutlet 987654323@ 项目中的子类我收到 “使用未声明的类型 'MyCustomView'” 错误,我无法构建我的项目。

这是我来自 UIViewController 子类的代码:

import UIKit
import MyCustomFramework


class MyViewController: UIViewController {

    @IBOutlet var myCustomView: MyCustomView?

}

这就是“MyCustomFramework”目标中的“MyCustomView.swift”的样子:

import UIKit

@IBDesignable class MyCustomView: UIView {

    @IBOutlet var imageView: UIImageView?

    init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)
    }
}

有人知道我忘记了什么吗?我是否以错误的方式导入它?我错过了什么吗?

【问题讨论】:

    标签: ios frameworks swift


    【解决方案1】:

    您应该将该类标记为public,因为它是不同框架模块的一部分

    @IBDesignable public class MyCustomView: UIView {
    
    }
    

    默认情况下,类和方法将处于internal 访问级别。如果您想在该目标之外使用该目标,则应将其标记为公开。那么只有它会成为公共接口的一部分(对目标外部可见)

    【讨论】:

    • 我认为最好始终阅读 Apple 每次 beta 更新的完整发行说明。此功能是通过更新添加的,我没有注意到更改。无论如何,谢谢你的提示! :)
    • 我也遇到了问题,但我的不是框架代码,而是我自己的代码......
    • 我现在开始工作了,这个答案stackoverflow.com/questions/25437891/… 给出了解决方案。基本上不知何故,构建阶段搞砸了,所以如果你的代码是内部的并且你发现了这个问题,这应该会有所帮助。
    • 为此找了一个小时。谢谢。
    【解决方案2】:

    在另一个项目 B 中导入自定义框架 A 后,我遇到了同样的错误,甚至我所有的类都是公开的。

    我通过在 Build Active Architecture 中将我的自定义框架 A 的 Building settings 更改为 No 而不是 Yes 来解决这个问题,然后清理编译,并在删除旧框架后再次重新导入框架。

    然后一切编译成功。

    【讨论】:

      猜你喜欢
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-10
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多