swift 无法示例化类_TtC12STracker23InfoInterfaceController

qncylg1j  于 2023-02-03  发布在  Swift
关注(0)|答案(4)|浏览(114)

我尝试构建我的手表应用程序,但总是收到错误

createViewController:className:properties:contextID:info:gestureDescriptions:
clientIdentifier:]:2916: Critical failure. Simulating crash: Condition failed:"NO". 
Couldn't instantiate class _TtC12STracker23InfoInterfaceController

我不得不在某个时候重命名我的项目,根据我的研究,这可能是问题的原因。我从头开始重新创建了Interface.StoryBoard和InfoInterfaceController,但没有帮助。

iezvtpos

iezvtpos1#

这不是解决此类问题的好方法,特别是当有人有更大的WatchOS应用程序项目,删除所有和重新创建是荒谬和耗时的。
首先检查您是否正确地重命名了您的项目,请按照Luke West的回答中的步骤操作:https://stackoverflow.com/a/35500038/7345611
然后执行以下步骤:
1.转到界面。故事板位于Xcode的左侧导航窗格
1.选择接口控制器顶部的黄色圆圈
1.去找身份检查员
1.在Class部分,通过重新输入类名并按Enter键将类重新分配给interfaceController,Xcode将自动更新它下面Module部分(所有问题都出在Module部分,其中Module仍然使用旧的名称)
1.对所有的interfaceControllers和customClass(如果有的话)以及之前分配给它的所有类执行相同的过程。
现在应用程序应按预期运行。

igsr9ssn

igsr9ssn2#

这是由于模块将指向手表应用程序而不是扩展,因为这些所有文件都存在于扩展模块中,您可以直接更改手表故事板文件InterfaceController、NotificationController和任何默认创建的接口的模块。

ygya80vv

ygya80vv3#

在WatchKit应用程序目标的“构建设置”中,确保更新IBSC_MODULE(默认模块)。将其设置为WatchKit扩展模块名称(在iOS应用中,IBSC_MODULE可以留空,并将自动指向目标的模块)。模块名称是目标产品名称的名称(通常也是目标的名称),并将空格替换为下划线。如果UI类位于框架中,请使用框架的模块名称,而不是WatchKit扩展模块名称。
例如,如果您的WatchKit扩展目标是“我的WatchKit扩展”,请在“我的WatchKit应用程序”目标中转到“构建设置”并将IBSC_MODULE更改为“My_WatchKit_Extension”。
如sandydhumale所述,在情节提要中选择接口控制器,并在身份检查器中确保选中“类”字段下的“模块”字段。空的“模块”字段意味着将在默认模块(由IBSC_MODULE设置)中搜索类。

qni6mghb

qni6mghb4#

因此,我通过删除所有监视目标和文件并重新创建它们来解决问题

相关问题