swift - 我的框架没有导入 Typealias
问题描述
我想编写一个方便的框架,其中有一些函数和一些类型别名。
我将我的框架添加到项目中,并且功能已导入并且工作正常。然而问题是我正在尝试使用我在框架中声明的类型别名,而 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]
解决方案
我的框架和外部项目遇到了同样的问题。常规修复(清理、派生数据和重新启动 xcode)对我也不起作用。
我发现在我的外部项目中已经有另一种类型使用了我想要的类型别名。由于您已将变量命名为 的通用名称Json
,因此它可能会被系统JSON
var 或外部项目中的另一个 var 覆盖。
如果您觉得必须保留该名称,则可以通过显式调用框架中的 typealias 来专门引用它。
框架:
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) { ... }
}
推荐阅读
- python - 使用字典查找列表列表的最大值和最小值
- django - 在heroku中部署django应用程序后TemplateDoesNotFound错误
- flutter - 当抖动中不存在图像时处理图像错误
- python - Python Web Scraping 没有得到所有的 HTML
- python - Simpleaudio wav 文件只播放一次
- mysql - 了解具有 REPEATABLE_READ 和 READ_COMMITED 隔离级别的 InnoDB X-Lock
- c# - 如何使用 ReactiveExtensions Range 和 WithAsync 每 N 页批量写入数据库
- d3.js - 如何使用 D3.js 处理 SVG 中的多个元素
- ios - 如何使 Coordinator 可重用?|斯威夫特
- javascript - 三元运算符不在反应 jsx 中呈现标记