运行ibtool时出现异常:找不到名为

时间:2016-09-15 09:13:35

标签: xcode cocoa interface-builder xcode8 nsvaluetransformer

我刚刚将Xcode升级到8.0(8A218a)并将我在Swift 2.3中的项目转换为Swift 3.0。现在唯一的问题是这个错误:

  

“运行ibtool时出现异常:无法找到值变换器   名称UTIToIconTransformer“

UTIToIconTransformer定义如下:

@objc(UTIToIconTransformer) class UTIToIconTransformer : ValueTransformer {
    // ...
}

代码在Swift 2.3中运行正常。使用此值转换器的绑定设置如下:

enter image description here

如果我删除此绑定,则应用程序会运行,行标题会正确显示。

我尝试在应用代理NSValueTransformer.setValueTransformer()+initialize()和价值转换器applicationDidFinishLaunching中调用+initialize(),如建议here,{{3和here at StackOverflow(虽然我不认为“通常,单例实例将在值变换器子类的+ initialize方法中注册,因此无需进一步设置即可使用。”符合Apple的文档。),都没有成功。

here at NShipster中,它说

Value transformers are typically registered by an application’s delegate 
class, in response to receiving a initialize: class message. This allows 
registration to occur early in the application startup process, providing
access to the value transformers as nib files load.

Availability in Interface Builder

Your NSValueTransformer subclasses are not automatically listed in the
Interface Builder bindings inspector. When inspecting a binding you can enter
the name that the value transformer is registered with, but the functionality 
will not be present in Interface Builder’s test mode. When your application 
is compiled and run the transformer will be used. 

但在AppDelegate override class func initialize()注册并没有帮助。在Xcode 7和Swift 2.3中,它甚至在没有注册的情况下工作。

1 个答案:

答案 0 :(得分:0)

最后,我通过从故事板中删除NSOutlineView并设置一个新问题来解决问题。 我有另一个项目也有一个与NSTreeController绑定的outlineview,并且该项目在Xcode 8.0升级后没有问题。然后我尝试使用新名称创建一个新的ValueTransformer,但没有运气。 我想故事板可能有问题,所以我尝试重新创建大纲视图。那么Xcode并没有抱怨它无法找到变形金刚!