Apple Script Bridge的奇怪错误 - iTunes

时间:2012-02-17 18:35:26

标签: objective-c macos

我正在尝试创建一个控制iTunes的ObjC应用程序。我需要一个方法来返回iTunes中所有播放列表的数组。

我收到了最奇怪,最无益的错误消息......首先是代码:

#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

我不知道数组返回是否正常工作,因为在做了一些调试后,我发现轰炸的地方是我创建iTunes对象的第一行,复制并粘贴来自Apple's website ...

我得到的错误是:

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)

有什么建议,到底是怎么回事?

1 个答案:

答案 0 :(得分:4)

此消息(以及类似的消息)表示链接器正在查找某些特定符号,但无法找到它。在您的情况下,它是SBApplication

如果您尚未这样做,则应确保已链接到ScriptingBridge框架。

要添加框架,请单击Xco​​de左侧栏顶部的项目图标,然后选择Build Phases。如果尚未展开“链接二进制库”,请执行此操作并添加框架。

相同的过程可以用于普通库(框架实际上只是一个库的包装器,至少为了讨论的目的)。