我想写一个方便的框架,其中有一些功能和一些类型别名。
我将我的框架添加到了项目中,并且功能被导入并且可以正常工作。但是问题是,我正在尝试使用在框架中声明的类型别名,并且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]
答案 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) { ... }
}