我正在尝试创建一个控制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)
有什么建议,到底是怎么回事?
答案 0 :(得分:4)
此消息(以及类似的消息)表示链接器正在查找某些特定符号,但无法找到它。在您的情况下,它是SBApplication
。
如果您尚未这样做,则应确保已链接到ScriptingBridge框架。
要添加框架,请单击Xcode左侧栏顶部的项目图标,然后选择Build Phases。如果尚未展开“链接二进制库”,请执行此操作并添加框架。
相同的过程可以用于普通库(框架实际上只是一个库的包装器,至少为了讨论的目的)。