我的模块中有一个类型:
import Cocoa
class ColoredDotView : NSView {
...
}
Run Code Online (Sandbox Code Playgroud)
它用于许多不同的类,没有问题:
class EditSubjectPopoverController : NSObject {
@IBOutlet internal var subjectColorDotView : ColoredDotView!
...
}
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,当我在一个特定的类中使用它时,我在类型上有编译错误:
class EditTaskPopoverController : NSObject {
@IBOutlet internal var lowPriorityDotView : ColoredDotView! // Error here
@IBOutlet internal var medPriorityDotView : ColoredDotView! // And here...
@IBOutlet internal var highPriorityDotView : ColoredDotView! // And here...
...
}
Run Code Online (Sandbox Code Playgroud)
编译错误是:
EditTaskPopoverController.swift:15:49:使用未声明类型'ColoredDotView'
哪个我不明白.这是文件中的第一个编译错误,其余的错误都是第一个的症状.此外,没有其他文件存在编译错误.我不明白为什么类型是未声明的,因为该文件在同一模块中:

我已经尝试清理项目,清理构建文件夹,然后重新启动Xcode,但无济于事.什么潜在的错误可能导致undeclared typeSwift中的编译器错误?
mat*_*orb 187
对我来说,当我的测试目标没有我的应用程序构建目标的一些swift文件在编译源中时,我遇到了这个错误.这是非常令人困惑的,因为"未申报的类型"在许多其他地方被使用没有问题,而且错误看起来很模糊.因此,解决方案当然是将包含"未声明类型"的文件添加到测试目标.
Edw*_*win 171
@Craig Otis已经回答了这个问题,但问题是当有问题的类不属于同一目标时,通常缺少测试目标.只需确保勾选以下复选框即可.

查看目标成员资格.选择文件,然后打开文件检查器(⌥+⌘+ 1)[ 选项 ] + [ 命令 ] + 1

Cra*_*tis 35
P,最后确诊了这个.不知何故,违规的Swift文件EditTaskPopoverController.swift处于两个不同的构建阶段.
它Compile Sources与所有其他Swift文件一样正确,但由于一些非常奇怪的原因,它也在Copy Bundle Resources同一阶段,以及我的所有XIB和图像资源.
我不知道它是如何实现的,但是从额外的构建阶段中删除它解决了这个问题.
Arr*_*ray 23
在XCode菜单中,Product-> Clean,然后Product-> Build为我工作.我在新的组/文件夹中添加新的ViewController到我的项目时遇到了这个问题.
Gro*_*oot 13
我有同样的问题.我的框架中的某些文件无法从同一模块中的其他类访问.
由于某种原因,在Xcode中添加到框架的文件不是编译源的一部分.如果您的Swift文件不是编译源的一部分,则需要通过点击+并在弹出窗口中选择它们来添加它们.

还要确保该文件是框架目标的一部分.(应检查下面屏幕截图中的小方框)

And*_*rew 12
我的原因是一个函数名称,以类型相同的字符开头:
@IBOutlet weak var tableView: CustomTableView!
Run Code Online (Sandbox Code Playgroud)
在实现中我有一个以CustomTableView开头的函数
func CustomTableView(tableView: CustomTableView, dataForRow row: Int) -> NSData {...}
Run Code Online (Sandbox Code Playgroud)
修复是更改函数签名,以便它不以与类型(CustomTableView)相同的字符开头,例如:
func dataForRow(row: Int, tableView: CustomTableView) -> NSData {...}
Run Code Online (Sandbox Code Playgroud)
对于我的案例中的实际原因,这是一个非常误导性的错误消息.
有时错误可能非常愚蠢
在检查这里的所有解决方案之前,请确保您已导入所有基本内容
import Foundation
import UIKit
Run Code Online (Sandbox Code Playgroud)
很有可能当你从外部导入一些文件到你的项目时,这可能会错过我曾经经历过的这些基本东西。
| 归档时间: |
|
| 查看次数: |
190249 次 |
| 最近记录: |