Xcode 无法识别新的 Swift 类

Posted

技术标签:

【中文标题】Xcode 无法识别新的 Swift 类【英文标题】:Xcode won't recognize a new Swift class 【发布时间】:2015-05-09 23:51:46 【问题描述】:

我在一个新文件中创建了一个新的 Swift 类

import Foundation

class RecordedAudio: NSObject
    var filePathUrl: NSURL!
    var title: String!

现在我想通过创建一个新对象在另一个类中使用它。

import UIKit
import AVFoundation

class recordSoundsViewController: UIViewController, AVAudioRecorderDelegate 
    var audioRecorder: AVAudioRecorder!
    var recordedAudio: RecordedAudio! // new object gives error

但是 Xcode 给了我错误“使用未声明的类型 RecordedAudio”,所以我被困在那里。类似的问题已在此处发布:How do I import a Swift file from another Swift file? 但这些解决方案都不适合我。顺便说一句,这是 Udacity swift 课程的一部分。谢谢,任何帮助将不胜感激。

【问题讨论】:

有时,您所需要的只是很好地重新启动 Xcode。 ⌘-Q使用 Xcode,然后重新打开并查看问题是否仍然存在。 对我来说,有时我必须重新启动它 4-5 次,相当麻烦 感谢大家的回复,我确实重启了几次xcode,但没有成功。 干净,CMD+k 为我工作 【参考方案1】:

在左侧的 Project Navigator 中,选择您声明 RecordedAudio 的文件。

现在,在右侧的文件检查器中,查看 Target Membership。应用目标(不是测试目标)应该被选中,类似于:

如果没有,请检查!现在一切都会好起来的。

【讨论】:

谢谢马特,那行得通。在新课程中,我同时选中了 "target" 和 "test target" ,所以我取消选中了 "test target" 并只保留了 "target" 。成功了。 对于未来的读者,如果已经选中,也可以尝试取消选中并再次选中目标。【参考方案2】:

在我的情况下,我必须从项目导航器中删除引用,然后再次添加它们(目标成员不是问题)。

【讨论】:

【参考方案3】:

我只需要完成 Full Monty 就可以让它工作......

    注释掉引用行 修复其他错误以确保构建 Cmd+Shift+K(清理构建文件夹) 不...让我们删除构建文件夹:/Users/[YOU]/Library/Developer/Xcode/DerivedData/project-name-ADM2KD... 重启 Xcode 构建 取消注释我们的引用行

还可以将@objc 添加到您的类定义上方的行中,并且可能将其设为public class 只是为了明确并且可能将public 添加到您的方法中。哦,确保你继承了NSObject

如果您无法显示初始化程序,我也刚刚注意到 Swift 4.2 在这里有更多问题。我切换回 Swift 3。没问题...

【讨论】:

可悲的是,这也是我必须做的才能让它工作。 添加 public 关键字对我有用。我将课程移至其他模块,然后 Xcode 在其他模块中无法识别。正如你提到的,我已经花了几个小时尝试上述步骤。谢谢队友:)【参考方案4】:

如果您的类在另一个模块中,请确保您的类和类初始化器具有 public 访问修饰符。

【讨论】:

【参考方案5】:

对我来说,我必须在类中检查与 ViewController 中相同的目标成员资格(我有一个 TodayExtension)

【讨论】:

【参考方案6】:

尝试了所有权切换、清理、重新启动 x-code、删除并重新添加引用但没有结果。

pod install 为我修复了它,这很奇怪,因为我的课程不是来自另一个模块或库。

【讨论】:

以上是关于Xcode 无法识别新的 Swift 类的主要内容,如果未能解决你的问题,请参考以下文章

Swift 无法识别这个特定的 Objective C 类构造函数

Xcode 无法识别新的出口和动作连接

Xcode 无法识别新的本地化

无法从 swift 控制器代码访问 Objective C 类

Swift:手势识别器无法识别的选择器发送到实例

RestKit iOS 教程 - Xcode 无法识别 RestKit 类方法 - 缺少框架?