如何引用在不同的 .swift 文件中定义的数据类型?
Posted
技术标签:
【中文标题】如何引用在不同的 .swift 文件中定义的数据类型?【英文标题】:How do I reference a datatype defined in a different .swift file? 【发布时间】:2014-10-15 21:48:49 【问题描述】:我无法访问在单独的 .swift 文件中声明的数据类型。
场景: 我有两个 .swift 文件:a) envSwift.swift 和 b) mySwift.swift
'envSwift.swift' 有我的各种数据类型,包括一个枚举(在任何类之外定义为自身):
mySwift.swift:
我收到编译器错误:“Use of unresolved identifier 'FKPermission'”。
如何使用(引用)在不同的 .swift 文件中定义的 public 数据类型?
提示: 当我将枚举 FKPermission 复制/粘贴到 mySwift.swift 的顶部并编译时,我收到以下编译器错误:“'FKPermission' 的重新声明无效";即使我无法访问它。 因此检测到原始枚举,但“未解决”。
【问题讨论】:
在分配给myPermission
时,MyPermissionRead
之前缺少一个点?
我添加了 enum.member 限定符,但仍然没有变化。我已经用屏幕快照替换了 .swift 文本;见上文。
它们是否都包含在同一个应用程序目标中?你试过清理和删除 Xcode 的 Derived Data 文件夹吗?
是的。同一个目标。我已经删除了派生数据并对构建文件夹进行了选项清理。同样的问题。
【参考方案1】:
虽然你说这两个文件都在同一个目标中,但也许其中一个也在另一个目标中(例如你的测试目标)? 这将导致您所描述的错误:
1) 'unresolved identifier' 错误(编译测试目标)
2) 复制/粘贴声明时 - “重新声明”错误(编译主目标)。
所以也许解决方案是:将envSwift.swift
也添加到您的测试目标中。
【讨论】:
你是对的。就我而言,问题是我将带有枚举声明的 swift 文件添加到了测试目标。所以枚举在测试类中没有被识别。以上是关于如何引用在不同的 .swift 文件中定义的数据类型?的主要内容,如果未能解决你的问题,请参考以下文章
我的 Swift 类出现在自动生成的 <target>-Swift.h 文件中,但没有出现在它的函数定义中