Swift 2.0 / Xcode 7B5 - 只有放在某个文件中才能找到类

Posted

技术标签:

【中文标题】Swift 2.0 / Xcode 7B5 - 只有放在某个文件中才能找到类【英文标题】:Swift 2.0 / Xcode 7B5 - Classes can only be found if put in a certain file 【发布时间】:2015-08-18 14:54:30 【问题描述】:

我注意到,当我想在其他类中使用类 User 时,无法找到该类。没什么可怀疑的。在给定的点上,我开始尝试将代码放在什么位置。

如果我将所有这些类放在我的一个旧文件中,所有这些都可以编译。如果我将它们全部放在一个较新的文件中,则使用这些类的代码的其他部分不会编译。如果我重命名一个文件(例如从 User.swift 到 AUser.Swift),则没有任何变化,这意味着编译的内容会继续编译,而未编译的内容仍然不会根据名称进行编译。它确实似乎是文件的年龄或类似的东西。

似乎我稍后添加的与此特定类集群相关的所有内容都不会在较新的文件中编译。这些文件在构建时包含在内,我检查过。这段代码我觉得没什么奇怪的:

import UIKit

public class User: AddressBookContact 
    var home: Home?
    var friends = [Friend]()




public class Friend: AddressBookContact 





class Session: NSObject 
    private static let instance = Session()

    override private init() 
        super.init()
    

    class func sharedInstance() -> Session 
        return instance
    

    static var loggedInUser: User?

【问题讨论】:

“不编译”是没有意义的。显示错误代码并说出您遇到了什么错误! 还有为什么你们的课是public?您在这里使用模块/框架吗?这肯定是问题的根源! - 请显示 AddressBookContact 的定义。 【参考方案1】:

查看文件检查器实用程序窗格(右侧窗格)。有问题的文件可能不是目标的成员。

【讨论】:

接受了,因为您让我朝着正确的方向前进,请更改您的答案以反映真正的解决方案。发生的事情是有一个 Project 和一个 ProjectTest 项目,并且一些引用 Friend 的类包含在测试中(在测试中没有单独使用 Friend 类)。但是错误没有出现在测试项目中,而是出现在主项目中,这让我完全走错了路。我需要将 Friend.swift 文件添加到测试项目中,以便为整个项目编译。

以上是关于Swift 2.0 / Xcode 7B5 - 只有放在某个文件中才能找到类的主要内容,如果未能解决你的问题,请参考以下文章

音频播放错误 - XCODE 7 (Swift 2.0)

Xcode 中的录制设置:Swift 2.0

反射 Swift 2.0 XCode 7 beta 5

Swift 2.0 代码在 Xcode 中有效,但在 Playground 中无效

我需要 Xcode 7 和 Swift 2.0 来更新我的应用吗

Alamofire 2.0 编译器问题 - Swift 2 / Xcode 7