2012-02-17 4 views
2

私は、iTunesを制御するObjCアプリケーションを作成しようとしています。私はiTunesですべてのプレイリストの配列を返すメソッドが必要です。Apple Script Bridgeで奇妙なエラー - iTunes

私が...今までに最初のコードで最も奇妙な、役に立たないエラーメッセージが出ています。arrayリターンが動作しているかどうか私はわかりません

#import "MusicControl.h" 
#import "iTunes.h" 

@implementation MusicControl 


- (SBElementArray *) playlists { 


    // Create iTunes Object 
    iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"]; 

    NSArray *sources = [iTunes sources]; 
    iTunesSource *librarySource = nil; 

    for (iTunesSource *source in sources) { 
    if ([source kind] == iTunesESrcLibrary) { 
    librarySource = source; 
    break; 
    } 
    } 

    return [librarySource userPlaylists]; 
} 

@end 

をため、いくつかのデバッグを行った後、I

...どここれが出て爆撃されたこと Apple's websiteからコピー&ペーストして、私はiTunesのオブジェクトを作成する非常に最初の行、であることがわかった私が取得していますエラーは次のとおりです。

Undefined symbols for architecture x86_64: 
    "_OBJC_CLASS_$_SBApplication", referenced from: 
     objc-class-ref in MusicControl.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

何が起こっているのかについてのご意見はありますか?

答えて

4

このメッセージ(および同様のもの)は、リンカーが特定のシンボルを検索しているが、見つからないことを意味します。あなたの場合はSBApplicationです。

まだ行っていない場合は、ScriptingBridgeフレームワークにリンクしていることを確認する必要があります。

フレームワークを追加するには、Xcodeの左側のバーの上部にあるプロジェクトのアイコンをクリックし、[ビルド段階]を選択します。バイナリライブラリとのリンクがまだ展開されていない場合は、それを行いフレームワークを追加します。

プレーンライブラリでも同じ手順を使用できます(フレームワークは実際には少なくともこの説明の目的ではライブラリのラッパーです)。

+0

まだ試していないが、これは分かっている。私は今、Scripting Bridgeのドキュメンテーションページにそのことを覚えています。ありがとうございました!私はあなたが私にこれに答えることにどれほど感謝しているのかは分かりません! –