2009-05-15 6 views
3

私はBrandon WalkinのBWSplitViewをBWToolkitのCocoa PyObjcプロジェクトで使用しようとしています。BWSplitViewとPyObjc

NSInvalidUnarchiveOperationException - *** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (BWSplitView) 

これは彼のツールキットはPyObcプロジェクトと互換性がありません意味していますので、私はちょうどデフォルトのインターフェイスビルダービューを使用する必要があります?私はプロジェクトを実行すると、私は、次のエラーメッセージが表示されますかBWToolkitは私のプログラムにとってはかなり完璧なようですが、私はそれを私のインターフェースのどこかで使うつもりです。

答えて

5

で全体のフォルダ)
3.インポートBWToolkitFramework私はあなたがロードしようとしたペン先/ XIBファイルにBWSplitViewを持っていたので、あなたがそのエラーを得たと思われます。 nibファイル内のオブジェクトのアーカイブを解除するには、ランタイムはアーカイブされたクラス(BWSplitViewなど)のインスタンスを作成できる必要があります。スローされている例外は、BWSplitViewがランタイムで使用できないためです。 Objective-Cアプリケーションでは、BWToolkitフレームワークにリンクし、動的リンカーはBWSplitViewを実行時に使用できるようにする作業を行います。 PyObjCアプリケーションでは、ランタイムで使用できるようにするクラス(Cocoaクラスなど、あなたのためにバックグラウンドでリンクされていないクラス)を明示的にインポートする必要があります。幸いにも、BWToolkitにはブリッジサポートファイルがありますので、直接インポートすることができます(/ Library/Frameworksなどの標準的なフレームワークの場所にあると仮定します)。ブリッジサポートファイルを持たないフレームワークをロードする必要がある場合は、objc.loadBundleを使用し、次にNSClassFromStringを使用してクラスオブジェクトを取得します。

サイドノートでは、/ System/Library/FrameworksはApple提供のシステムフレームワーク用に予約されています。アップルはシステムの更新時にそのフォルダを消去する可能性があるため、サードパーティのフレームワークをそのフォルダに置いてはいけません。システム上のすべてのユーザが利用できるThrid-partyフレームワークは、〜/ Library/Frameworksと同様に/ Library/Frameworks、ユーザ固有のフレームワーク、Contents/Frameworksのアプリケーション固有のフレームワークに配置する必要があります。

+2

(アプリケーションバンドル)/ Contents/Frameworksのアプリケーション固有のフレームワーク。 –

0

私は、次の手順を使用して、これを修正しました:ダウンロード
1とhttp://github.com/jrydberg/pyobjc-bwtoolkitframework/tree/master
2. BWToolkit.frameworkは(これはBWToolkitやコピーをもう一度ダウンロードすることにより行うことができます/システム/ライブラリ/フレームワークの中にインストールされていることを確認をインストールしますmain.py

0

我々は、同様のメッセージが持っていた:私たちのケースで

*** Terminating app due to uncaught exception ‘NSInvalidUnarchiveOperationException’, reason: ‘*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (MKMapView)’ 

それは、ターゲットのビルド設定の下に設定する「フレームワーク検索パス」内の浮遊エントリによるものでした。そのエントリがクリアされると、問題はなくなりました。

関連する問題