我升级到Xcode 6 beta 4后,我的应用程序不断崩溃,并显示以下消息:
接口生成器文件中未知的类X。
它崩溃了,因为据说Xcode找不到我在Storyboard中链接的自定义类,但它在Xcode界面中显示链接正确。
我确信一切都链接正确。我的唯一选择可能是删除整个storyboard文件并从头开始,因为它可能以某种方式损坏了。
编辑:我还想补充一点,即我尝试过清理、重置模拟器、调整构建阶段等,但没有任何作用。
我升级到Xcode 6 beta 4后,我的应用程序不断崩溃,并显示以下消息:
接口生成器文件中未知的类X。
它崩溃了,因为据说Xcode找不到我在Storyboard中链接的自定义类,但它在Xcode界面中显示链接正确。
我确信一切都链接正确。我的唯一选择可能是删除整个storyboard文件并从头开始,因为它可能以某种方式损坏了。
编辑:我还想补充一点,即我尝试过清理、重置模拟器、调整构建阶段等,但没有任何作用。
我在输入问题时解决了这个问题。我想我会回答我的问题并将其留在这里,供其他可能在使用Xcode 6 beta 4时遇到此问题的人参考。
要解决这个问题,您需要在Storyboard中选择每个自定义类对象(包括任何自定义视图,甚至是自定义视图控制器本身)。
然后,在选择这些对象的同时,打开身份检查器,在“Custom Class”下面,您应该看到Module选项。最后:
就这样!我所有自定义对象的当前模块在Xcode 6 beta 4中可能被错误地设置了。但是,在检查器中没有任何视觉指示。
请注意,如果在模块文本框内按Enter键无法解决问题,请尝试选择右侧的箭头并手动选择当前模块,然后清除文本框并按Enter键。您还可以尝试在类文本框内按Enter键(尽管这通常是为了解决不同的问题)。
以下是一张图片,以使事情更加清晰:
@objc(...)
后,修复了开始发生的问题。请问需要翻译其他内容吗? - ndbroadbentcustomModule="AppName" customModuleProvider="target"
。为解决此问题,请将故事板文件打开为源代码,并替换该行:<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
sceneMemberID="viewController">
到这个:
<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
customModule="AppName" customModuleProvider="target" sceneMemberID="viewController">
customModuleProvider
对我也起到了作用,谢谢! - Sakiboy我在重命名Swift类之后遇到了这个问题。通过使用@objc指令解决了它:
@objc(ForumTopicListViewController) class ForumTopicListViewController
@objc class X
的方式,改成@objc(X) class X
后就可以了。 - Joe拥有多个目标的项目
在我的情况下,我正在处理一个拥有多个目标的项目,问题在于 "继承自目标" 的复选框未被选中。选择 "继承自目标" 解决了我的问题。
这对我很有效。
检查你的编译源代码,是否已经添加了那个文件(例如:ViewController.m),在我的情况下,ViewController文件没有被添加,所以它导致了错误。
这可以在任何6.0及以上版本的Xcode中发生。在Swift项目中重命名一些ViewController类之后,我遇到了这个问题(但我想Obj-C也会出现这种情况)。您只需打开Interface Builder,转到已重命名类的ViewController的Identity Inspector,选择类并按Enter键。那将重新分配已重命名的类到所选的ViewController,并重置模块值,因为在重命名类之后该值会丢失。
针对Xcode 8.1(可能也适用于8.0)的更新:
Xcode 8.1会崩溃。令人烦恼的是,它简单地崩溃而且不会打印任何信息。我追踪了一个小时的幽灵崩溃,才发现是同样的原因 - 在IB中未分配类。如果您遇到一些幽灵崩溃,请先仔细检查IB中是否存在未分配的类。
有时您提供的控制器会失去当前应用程序的目标成员资格。在这种情况下,按下“模块”字段上的Enter键将不起作用。前往控制器并确保其目标成员资格已设置为当前应用程序。