当对快速文件进行分组时,我在继承类时遇到了问题。例如,如果文件结构如下所示,我可以继承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开始有什么变化吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Xcode项目中,当你对文件进行分组时,实际上并不会改变文件的物理路径或其在编译时的作用域。不过,根据你的描述,似乎遇到了编译器无法识别Test
结构体的问题,这通常是因为编译设置或者导入问题导致的。
这里有几个可能的解决方案:
确保Target Membership正确:检查Test.swift
文件的Target Membership,确保它被正确地添加到了你的目标应用或框架中。你可以在Xcode中选择Test.swift
文件,然后在右侧检查器面板的"File Inspector"标签页下查看并确认这一点。
使用正确的导入语句:如果你的Model
是一个模块(比如一个Framework或者Swift Package),那么在使用Test
之前,需要在ViewController.swift
文件顶部导入相应的模块。但基于你的描述,看起来它们应该都属于同一个模块,所以这一步可能不是必要的,除非你确实将Model
目录转换为了一个独立的模块。
清理并重建项目:有时候Xcode的索引或缓存可能会导致这类问题,尝试执行Product -> Clean Build Folder,然后重新构建项目。
检查命名空间和模块名称:虽然Swift默认有一个全局命名空间,但在某些情况下,特别是涉及到模块化开发时,确保没有命名冲突或需要显式引用的情况。
Xcode版本问题:尽管你说从Xcode 11开始遇到这个问题,但实际上Xcode对Swift项目的支持和编译逻辑在这方面的变化不大,更可能是项目配置或工作区状态的问题。不过,确保你的Xcode版本是最新的,有时更新可以解决一些已知的编译器或索引问题。
如果以上步骤都不能解决问题,建议检查项目的完整配置,包括Build Settings中的Swift编译器选项,以及是否有其他潜在的项目设置干扰了正常的编译流程。