故事板中没有某些 类 场景的目标

Target without some of the classes of the scenes in the Storyboard

我的项目中有许多目标,每个目标都使用相同的故事板,但只选择了其中链接的 classes。通常 Xcode 不会抱怨,至少在 iPhone 版本和大多数目标中不会。然而,一个特定的人抱怨两个特定的 classes:

Unknown class ****** in Interface Builder file.

Unknown class $$$$$$ in Interface Builder file.

尽管情节提要中还有许多其他场景 class 未包含在目标中,即使在这种特定情况下也是如此。

当我在 iPad(模拟器)上执行应用程序时发生,一段时间后它在 UIApplicationMain 上崩溃;不过不知道这两件事有没有联系。

有没有什么方法可以让 Xcode 决定检查情节提要的某些场景,而另一些场景则不检查是否存在相应的 class?

问题是 Swift 是基于模块的。每个目标都是一个模块。 class 在特定模块中定义,并命名为该模块。

因此,MyFirstTarget 中的 ViewController 不同于 MySecondTarget 中的 ViewController - 它们是 MyFirstTarget.ViewControllerMySecondTarget.ViewController

如果您查看 Storyboard 的身份检查器,您会发现实际上它会告诉您它认为此 class 属于哪个模块。因此,如果在 nib 加载时该模块不存在,它可能会变得非常混乱。

更简单地说,我在对象中未使用的其他目标中引入了 SplitView,当它试图将其显示为入口场景时,它崩溃了。事实上,未知 类 是主控制器中的那个可能与拆分视图一起显示。

我通过复制 iPad 故事板解决了这个问题,其中一个有 Splitview,另一个没有。