使用脚本桥创建 iTunes 播放列表

2024-03-13

我正在尝试使用可可脚本桥创建一个新的用户播放列表,但似乎无法让它工作。到目前为止我有:

iTunesApplication *iTunes = [SBApplication 
                            applicationWithBundleIdentifier:@"com.apple.iTunes"];
SBElementArray *iSources = [iTunes sources];
iTunesSource *library = nil;
for (iTunesSource *source in iSources) {
    if ([[source name] isEqualToString:@"Library"]) {
        library = source;
        break;
    }
}

// could not find the itunes library
if (!library) {
    NSLog(@"Could not connect to the iTunes library");
    return;
}

// now look for our playlist
NSString *playlistName = @"new playlist";
SBElementArray *playlists = [library userPlaylists];
iTunesUserPlaylist *playlist = nil;
for (iTunesUserPlaylist *thisList in playlists) {
    if ([[thisList name] isEqualToString:playlistName]) {
        playlist = thisList;
        break;
    }
}

// if the playlist was not found, create it
if (!playlist) {
    playlist = [[[iTunes classForScriptingClass:@"playlist"] alloc] init];
    [playlist setName:playlistName];
    [[library userPlaylists] insertObject:playlist atIndex:0];
}

当我尝试为播放列表添加名称时,收到错误消息:

iTunesBridge[630:80f] *** -[SBProxyByClass setName:]: 对象尚未添加到容器中;选择器无法识别

有人能指出我正确的方向吗?


该错误消息告诉您,像播放列表这样的 Scripting Bridge 对象在添加到相关 SBElementArray 之前无法接收消息,因此您在将播放列表添加到数组之前尝试设置播放列表的属性会失败。

最简单的解决方案就是重新排列最后两行代码,如下所示:

// if the playlist was not found, create it
if (!playlist) {
    playlist = [[[iTunes classForScriptingClass:@"playlist"] alloc] init];
    [[library userPlaylists] insertObject:playlist atIndex:0];
    [playlist setName:playlistName];
}

另一种选择是使用initWithProperties:根据您对另一个答案的评论,这就是您最终所做的事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用脚本桥创建 iTunes 播放列表 的相关文章

  • SMLoginItemSetEnabled - 从应用程序沙盒登录开始 - Xcode 6.3(插图)

    当应用程序沙箱化时 如何使应用程序具有登录时启动功能 感谢 CORY BOHON 他创建了以下教程 http martiancraft com blog 2015 01 login items http martiancraft com b
  • 学习 MacRuby 的好资源 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我不懂 Ruby 但我有兴趣学习 MacRuby 您会推荐什么作为您的最佳资源 书籍 博客 网站 Fo
  • 相当于 Cocoa 中的 FileSystemWatcher (.NET)

    我正在 Cocoa 中开发一个应用程序 我想不断检查特定位置的文件内容是否已更改 例如FileSystemWatcher在 NET中 请任何人给我一个解决方案 请看一下FSEvents http developer apple com do
  • 带有分段控件的 NSToolbarItem - 图像未正确渲染

    我正在尝试模拟 Xcode 的工具栏控件来显示 隐藏导航器和检查器 但没有底部窗格 仅左侧和右侧 两段 我从 Xcode 的 UI 中截取图标 并在图像编辑应用程序中跟踪它们 左窗格的资源是 1x 20x20 72 dpi 2x 40x40
  • 我可以使用 CALayer 来加速视图渲染吗?

    我正在制作一个自定义 NSView 对象 其中一些内容经常更改 而另一些内容则很少更改 事实证明 变化较少的部分需要花费最多的时间来绘制 我想做的是将这两个部分渲染在不同的层中 以便我可以分别更新其中一个或另一个 从而使我的用户免受缓慢的用
  • 如何避免添加多个 NSNotification 观察者?

    目前 API 似乎没有提供一种方法来检测是否已为特定 NSNotification 添加了观察者 除了在端维护一个标志来跟踪之外 避免添加多个 NSNotification 观察者的最佳方法是什么 有人已经创建了一个类别来促进这一点吗 防止
  • NSView mouseEntered/mouseMoved 在拖动操作期间未调用(反之亦然)

    我有一个带有透明边框的无边框窗口NSView 当鼠标光标进入透明视图时 应该会出现第二个视图 放置目标 允许用户放置文件 问题是draggingEntered 将文件拖到上方时不会被调用透明视图 因此放置目标视图永远不会出现 透明视图具有正
  • 当 dec 不为 0 时,为什么 0xF00 被解释为 NO

    我发现 BOOL x BOOL 0xF00 is NO 价值0xF00非零 但结果仍然是NO 但这打破了我的范式 BOOL 应该作为 NO 0 YES any other value 为什么会这样呢 这是否意味着检查 if object 不
  • 如何使用 Objective-C 使文件在 Finder 中不可见

    如果可能的话 我需要使用 Objective C 或使用 C 调用将文件隐藏在查找器中以及聚光灯下 Thanks 您可以使用 chflags path to file UF HIDDEN 隐藏任何文件 See 手动更改标志 2 https
  • iTunes Music Store Link Maker — 如何在我的应用程序中进行搜索?

    我正在编写一个音乐参考应用程序 并且对于每张专辑 从 last fm 中提取 都希望链接到 ITMS 如果专辑在商店中 iTunes 链接制作器网络工具http apple com itunes linkmaker http apple c
  • Objective-C 类别导致无法识别的选择器

    我的项目有一个UIImage我想从另一个类调用的类别函数 我正确导入了图像类别的头文件 并且在没有警告的情况下编译了项目 问题是当我打电话时UIImage类别函数我看到一个无法识别的选择器错误NSInvalidArgumentExcepti
  • WKWebView CALayer 到图像导出空白图像

    我试图截取网页的屏幕截图 但图像始终为空白 白色 我正在使用此代码进行转换CALayer to Data 取自这里 https stackoverflow com a 41387514 4859791 extension CALayer G
  • 如何将文件保存到 iPhone 上?

    我有一个问题 你们大多数人可能会觉得有点奇怪 我正在为 OS X 制作一个应用程序 但我需要它来将文本文件写入 iPhone 文件夹 我知道 iPhone 必须连接到电脑 而且我认为发送电子邮件不起作用 我认为这就像在连接时找到 iPhon
  • 在控制台应用程序中使用 swift 处理可可按键事件(按下按键)

    好吧 我正在尝试登录控制台输出按下的键 我只是无法理解可可的结构 无论是 Obj c 还是 swift 我不是这两种语言的大师 但是 这是我的代码 import Cocoa import Foundation import AppKit v
  • 如何将主菜单添加到 xib

    我从 xib 文件中删除了主菜单 我怎样才能重新创建它而不需要处理它 另一个新创建的xib 我似乎找不到如何告诉 IB 我从对象库添加的菜单实际上是主应用程序菜单 你不能 您过去可以简单地连接mainMenu菜单的出口 但从 Xcode 4
  • 快速以编程方式清除 NSView

    我有一个NSView连接到自定义类 该视图上有一些图画 class LineDrawer NSView var linear NSBezierPath var storage NSUserDefaults standardUserDefau
  • 如何有条件地使用新的 Cocoa API

    苹果在 10 6 中添加了 NSPropertyListSerialization dataWithPropertyList format options error 并标记较旧的 NSPropertyListSerialization d
  • NSTableView 如何通过代码设置内容模式(基于视图或基于单元格)?

    如题 NSTableView 如何通过代码设置内容模式 基于视图或基于单元格 感谢您的帮助 NSTableView默认为基于单元的 这对于向后兼容性是有意义的 当表视图委托实现时 表视图是基于视图的 tableView viewForTab
  • 是否可以将 pyobjc 与特权 XPC 帮助工具和 XPCInterface API 一起使用?

    我相信这个问题的答案是 否 但我将其发布给社区 以防有人比我更成功 我有一个特权帮助程序工具 客户端 Cocoa 应用程序将其与 NSXPCConnection 和 NSXPCInterface 一起使用 该接口本身包括一个通过完成处理程序
  • 将 NSDictionary 保存到 plist

    我正在使用这篇文章中找到的代码 Plist 中的多个数组 https stackoverflow com questions 6192451 mulitple arrays from plist 6193397 6193397 具有相同的

随机推荐

  • 如何禁用查看定义

    在 Visual Studio 中 当我在任何方法上按 F12 转到定义 时 它都会在文档选项卡右侧的 窥视 类型窗口中打开 颜色为深色主题上的紫红色 粉红色 问题是 99 的时候我需要按 F12 进入 2 个或更多方法 但该窗口不断被最新
  • 避免刷新页面时 Spring MVC 表单重新提交

    我正在使用 spring MVC 将数据保存到数据库中 问题是当我刷新页面时它重新提交 JSP 页面 下面是我的代码片段
  • Pipenv install 给出“pew 不在您的路径中”

    我有 Mac OS X El Capitan 安装了 python 3 6 pip pipenv 无法使 Pipenv 工作 pipenv install Creating a virtualenv for this project War
  • 如何使用 iPhone 的摄像头跟踪运动?

    我看到有人制作了一个应用程序 可以使用摄像头跟踪你的脚 这样你就可以在 iPhone 屏幕上踢虚拟足球 你怎么能做这样的事 有谁知道有关使用 iPhone 摄像头检测物体并跟踪它们的任何代码示例或其他信息吗 我刚刚在 SecondConf
  • SharePoint 应用程序部署错误:“无法安装 SharePoint 应用程序”

    当我尝试添加 SharePoint mvc 应用程序时 出现以下错误 Error occurred in deployment step Install app for SharePoint Failed to install app fo
  • 流星mup永久怎么用?

    我可以在 Meteor mup 文档中读到 如果进程崩溃 它会永远使用它来重新启动进程 https github com arunoda meteor up https github com arunoda meteor up 在命令行中
  • Xcode 4“等待进程‘Appname’启动

    我安装了 Xcode 4 但现在无法运行我的 iPhone 项目之一 Copyright 2004 Free Software Foundation Inc GDB is free software covered by the GNU G
  • 为什么java中BitSet的内部数据存储为long[]而不是int[]?

    在java中 内部数据BitSet https docs oracle com javase 8 docs api java util BitSet html存储为long 而不是int 我想知道为什么 jdk中的代码如下 The inte
  • 如何在 Firefox 中动态调整 iFrame 大小?

    我使用本页所述的解决方案根据内容调整 iFrame 的大小 根据内容调整 iframe 的大小 https stackoverflow com questions 153152 resizing an iframe based on con
  • 使用不同版本的 Android 支持库的解决方法

    这是参考 build gradle 文件中出现的警告消息 所有 com android support 库必须使用完全相同的版本 规范 混合版本可能会导致运行时崩溃 我很清楚这一点 并在我自己的代码 构建中使用相同的版本 然而 当涉及到某些
  • 更改 bash 中的单词分隔符

    我想更改 bash 或 readline 用于分隔单词的分隔符 具体来说我想做 不分隔单词 这样如果我有文本 ls some file 我按Alt Backspace它删除整个some file文本 而不仅仅取决于 字符 这也会导致删除长标
  • 密码通知脚本在剩余天数内引发“类型不匹配”错误

    我可以让每个人单独工作 但我无法让他们一起工作 登录脚本使用strArg 调用HTA文件时 HTA文件会生成一个密码窗口 当登录脚本运行 HTA 文件时 第 31 行和第 106 行出现错误 我知道问题出在strArg 我想不明白 应在到期
  • 控制器映射中的 ASP.NET MVC 枚举参数

    ASP NET MVC 为控制器方法提供了简单的模板 例如Details 并且可以有类似的东西 public ActionResult Details int id do something 可以通过以下方式访问 http localhos
  • 如何向 JTable java 插入/删除列

    我不知道该怎么办 我正在创建一个应用程序 我需要使用表格 所以我使用 JTable 但我对此有很多问题 它似乎有效 但是当我尝试删除列时 该列消失了 仅在 GUI 中 但所有信息仍然存在 列数也不会改变 我搜索并尝试了很多不同的代码 但没有
  • MySQL 中的“unsigned”是什么意思以及何时使用它?

    MySQL 中的 unsigned 是什么意思 什么时候应该使用它 MySQL http dev mysql com doc refman 5 7 en numeric type attributes html says 所有整数类型都可以
  • 更改别名目标 python

    我想使用 python 更改别名的目标 我是否必须下载一些外部库才能执行此操作 我尝试了一下别名 但无法找到任何无需用户输入即可编辑它们的方法 我使用的是Mac Python 2 6 据我所知 使用 PyObjC 应该可以访问 Mac 的基
  • 上传时获取原始文件创建日期

    我们有一个将文件上传到我们网站的流程 对于用户来说 能够看到这些文件的创建时间变得很重要 我正在寻找一种从 HttpPostedFile 中提取原始创建日期的方法 如果有人对我有想法 我会非常感激 此时我有点困惑 您无权访问在客户端上创建文
  • Autoscaling 组中的 UpdatePolicy 对于 AWS CloudFormation 更新无法正常工作

    我正在使用 AWS CloudFormation 启动我的服务器堆栈 我创建了一个 LaunchConfig 然后创建了使用上述 launchconfig 的 AutoScaling 组 我已经设置了 CreationPolicy 它等待来
  • jQuery 的 .val() 在 Facebox 中不起作用

    我正在使用 Facebox http defunkt github com facebox http defunkt github com facebox 在我的网站之一上 我还在网站上广泛使用 jQuery 我的问题是 val 函数似乎无
  • 使用脚本桥创建 iTunes 播放列表

    我正在尝试使用可可脚本桥创建一个新的用户播放列表 但似乎无法让它工作 到目前为止我有 iTunesApplication iTunes SBApplication applicationWithBundleIdentifier com ap