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 类构造函数