开发者社区 问答 正文

在XCode 11中分组时无法创建类的实例

当对快速文件进行分组时,我在继承类时遇到了问题。例如,如果文件结构如下所示,我可以继承Test对象。

test
|-Test.swift
|-ViewController

但是,如果我将快速文件分组,那么我就无法创建一个实例,从而给出一个错误。Use of unresolved identifier 'Test’

test
|-Model
    |-Test.swift
|-ViewController

视图控制器

class ViewController: UIViewController {


    let test = Test()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

    }
}

试验

public struct Test {
    var frameRate = 0.0
    var name: String?
}

我以前没有这个。从Xcode 11开始有什么变化吗?

展开
收起
游客5akardh5cojhg 2019-12-09 13:41:50 614 分享 版权
阿里云 AI 助理回答

在Xcode项目中,当你对文件进行分组时,实际上并不会改变文件的物理路径或其在编译时的作用域。不过,根据你的描述,似乎遇到了编译器无法识别Test结构体的问题,这通常是因为编译设置或者导入问题导致的。

这里有几个可能的解决方案:

  1. 确保Target Membership正确:检查Test.swift文件的Target Membership,确保它被正确地添加到了你的目标应用或框架中。你可以在Xcode中选择Test.swift文件,然后在右侧检查器面板的"File Inspector"标签页下查看并确认这一点。

  2. 使用正确的导入语句:如果你的Model是一个模块(比如一个Framework或者Swift Package),那么在使用Test之前,需要在ViewController.swift文件顶部导入相应的模块。但基于你的描述,看起来它们应该都属于同一个模块,所以这一步可能不是必要的,除非你确实将Model目录转换为了一个独立的模块。

  3. 清理并重建项目:有时候Xcode的索引或缓存可能会导致这类问题,尝试执行Product -> Clean Build Folder,然后重新构建项目。

  4. 检查命名空间和模块名称:虽然Swift默认有一个全局命名空间,但在某些情况下,特别是涉及到模块化开发时,确保没有命名冲突或需要显式引用的情况。

  5. Xcode版本问题:尽管你说从Xcode 11开始遇到这个问题,但实际上Xcode对Swift项目的支持和编译逻辑在这方面的变化不大,更可能是项目配置或工作区状态的问题。不过,确保你的Xcode版本是最新的,有时更新可以解决一些已知的编译器或索引问题。

如果以上步骤都不能解决问题,建议检查项目的完整配置,包括Build Settings中的Swift编译器选项,以及是否有其他潜在的项目设置干扰了正常的编译流程。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址: