我的框架未导入Typealias

时间:2018-11-21 18:59:36

标签: swift xcode

我想写一个方便的框架,其中有一些功能和一些类型别名。

我将我的框架添加到了项目中,并且功能被导入并且可以正常工作。但是问题是,我正在尝试使用在框架中声明的类型别名,并且XCode给我这个编译器错误“使用未声明的类型'Json'

我宣布了所有内容都是公开的,包括类型别名

override func viewDidLoad() {
    super.viewDidLoad()
    print(DBCore.randomInt())
    print(DBCore.randomInt(upTo: 10))
    print(DBCore.randomString())
    var x : Json? // compiler error here "Use of undeclared type 'Json'"

}

框架代码:

import Foundation

public class DBCore{

    public static func randomString() ->String{
        return UUID().uuidString
    }

    public static func randomInt() -> Int{
        return Int(arc4random())
    }

    public static func randomInt(upTo upperBound : Int) -> Int{
        return Int(arc4random_uniform(UInt32(upperBound)))
    }
}

public typealias Json = [String : Any]
public typealias JsonArray = [Json]

1 个答案:

答案 0 :(得分:0)

我的框架和外部项目遇到了同样的问题。常规修复(干净,派生数据和重新启动xcode)对我也不起作用。

我发现我的外部项目中已经有使用我想要的类型别名的其他类型。由于您已将变量命名为Json的通用名称,因此系统JSON var或外部项目中的另一个var可能会覆盖它。

如果您必须保留名称,则可以通过从框架中显式调用类型别名来专门引用它。

框架:

public typealias MyTypeAlias = ((Bool) -> Void)
public protocol MyDelegate {
    func myFunc(with fancyType: MyTypeAlias)
}

外部项目:

@import MyFramework

public class MyLocalDelegate: MyDelegate {
    func myFunc(with fancyType: MyFramework.MyTypeAlias) { ... }
}