我试图通过使方法和文件尽可能短并使用嵌套类进行命名空间来使我的代码尽可能可读。它工作正常,除了一些非常奇怪的时刻。
我有一些用于命名空间的类。
class Space { }
该类中使用的所有类都作为扩展在它们自己的文件中实现。
extension Space {
class SomeClass {
// implementation
}
}
其中一个SomeClasses
有许多非常复杂的初始化程序,所以我也将它们拆分为自己的文件,并按如下方式实现:
extension Space.SomeClass {
convenience init(fromSomeSource source: SourceClass) {
self.init()
// other implementation
}
}
问题是其中一些文件工作得很好,但其中一些会抛出'SomeClass' is not a member type of 'Space'
,我不知道为什么。
它们都非常相似。唯一的区别是初始化程序本身的实现。所有文件都保存在同一个地方,我不知道为什么其中一些可以正常工作而有些不能。
我试图将代码从不工作的文件移动到工作正常且工作的文件中——Xcode 同意查看代码并且没有反对它。但是当相同的代码位于它自己的文件中时——Xcode 或编译器不想理解它SomeClass
真的是Space
.
我试图清理构建,包括手动转储~/Library/Developer/Xcode/DerivedData
文件夹。没有什么帮助。
当然,我可以将它们全部放在一个文件中,它会正常工作,但在我的情况下它如此挑剔的原因是什么?
我试图创建一个新文件并将其中一个坏文件中的所有内容移到那里。它有效,但仅适用于某些文件名。有些名称再次给出相同的错误,但似乎如果名称是全新的并且与任何现有名称都不相似 - 它可以工作。魔法?