Posted at

Swift + Cocoa Bindingで気をつけること

More than 5 years have passed since last update.

ObjCでCocoa Bindingを使っているサンプルをSwiftで書き直して実行するとこんなエラーがでました。

Cannot find object class with name ParsonModel

どうやらコントローラにバインドしたモデルクラスが見つからないようです。


原因

Swiftではシンボル名がマングルされるので、クラス名だけでは名前を特定できない。


対策

モジュール名.クラス名 というように指定する必要があります。


こちらのサンプルをSwiftで書き換えていきます。

Quick Start for Collection View - Mac Developer Library

ほとんど何も考えないで書き換えられますが、

Make the Array Controller and the Array でクラス名を指定する時だけ

"モジュール名.PersonModel" とする必要があります。

またはクラスに(@objc)を付けておけば クラス名 だけでよくなります。

@objc(PersonModel)

class PersonModel : NSObject {
...
}


参考

Swift – “Cannot find object class with name” - stackoverflow