【问题标题】:Weird Error With Apple Script Bridge - iTunesApple Script Bridge 的奇怪错误 - iTunes
【发布时间】:2016-03-13 00:52:11
【问题描述】:

我正在尝试创建一个将控制 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)

有什么建议吗?

【问题讨论】:

    标签: objective-c macos


    【解决方案1】:

    此消息(和类似消息)表示链接器正在寻找某个特定符号,但找不到它。在您的情况下,它是SBApplication

    如果您还没有这样做,您应该确保您已链接到 ScriptingBridge 框架。

    要添加框架,请单击 Xcode 左侧栏顶部的项目图标,然后选择 Build Phases。如果 Link With Binary Libraries 尚未展开,请执行此操作并添加框架。

    同样的过程可以用于普通库(框架实际上只是一个库的包装器,至少就本次讨论而言)。

    【讨论】:

    • 我还没试过,但我知道就是这样。我记得现在在 Scripting Bridge 的文档页面上看到了这一点。谢谢你!我无法告诉你我多么感谢你为我回答这个问题!
    猜你喜欢
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    相关资源
    最近更新 更多