如何引用在不同的 .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 文件中,但没有出现在它的函数定义中

如何从不同的swift文件访问一个类中的所有对象

如何在 Swift 子类中引用目标 c 实例变量?

设置UITableView数据源并在单独的文件中委托 - swift

iOS swift中值类型与引用类型的不同

iOS Swift delegate的使用