如何使用 Swift 在 OS X 上读取 Finder 图标(左侧源列表)

2023-12-20

我尝试阅读有关左侧源列表中的查找器中显示的图标的信息。我已经尝试过了NSFileManager有以下选项

  • NSURLEffectiveIconKey读取的图标与 Finder 中的图标不同
  • NSURLCustomIconKey- 返回零
  • NSURLThumbnailKey- 返回零
  • NSThumbnail1024x1024SizeKey- 返回零

我设法使用 NSFileManager 读取所有已安装的设备,但我不知道如何读取与设备连接的图标?也许有人有任何想法或提示。

我也尝试使用

var image: NSImage = NSWorkspace.sharedWorkspace().iconForFile((url as! NSURL).path!)

但它返回相同的图像NSURLEffectiveIconKey

Thanks!


首先,查询 Finder 侧边栏中显示哪些卷的正确方法是使用 LSSharedFileList API。该 API 还提供了一种查询图标的方法:

LSSharedFileListRef list = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteVolumes, NULL);
UInt32 seed;
NSArray* items = CFBridgingRelease(LSSharedFileListCopySnapshot(list, &seed));
CFRelease(list);
for (id item in items)
{
    IconRef icon = LSSharedFileListItemCopyIconRef((__bridge LSSharedFileListItemRef)item);
    NSImage* image = [[NSImage alloc] initWithIconRef:icon];

    // Do something with this item and icon

    ReleaseIconRef(icon);
}

您可以使用以下方式查询项目的其他属性LSSharedFileListItemCopyDisplayName(), LSSharedFileListItemCopyResolvedURL, and LSSharedFileListItemCopyProperty().

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

如何使用 Swift 在 OS X 上读取 Finder 图标(左侧源列表) 的相关文章

  • Swift 中的 id 相当于什么?

    我有两个这样的代表 protocol MyFirstDelegate func change value int protocol MySecondDelegate weak var delegate MyFirstDelegate 这些协
  • MacOS X 和 iOS 中的 ASLR 究竟随机化了什么

    有谁有最新 Mac OS 10 7 和 iOS 6 0 在什么情况下随机化的文档链接 我是说 我想看一个列表 类似的东西 代码段 在情况 A B C 中 堆栈 始终 Heap 数据段 从不 最好每个东西有多少位随机化 我能找到的只是这样的内
  • 安装 homebrew 后终端无法识别 nvm

    我通过自制软件安装了 nvm 但是当我运行 nvm v 或 nvm version 表单终端时 我收到消息 command not found nvm 当我查看 finder 和 cmd shift 时 我可以看到 nvm 文件夹 最初 我
  • 如何在一个视图控制器中使用两个自定义 UITableViewCell 创建两个表视图?

    我正在尝试创建两个UITableViews在一个视图控制器中使用两个自定义UITableViewCells 我有以下内容 func tableView tableView UITableView cellForRowAtIndexPath
  • 以编程方式访问 Apple Notes 内容

    是否可以以编程方式访问Apple Notes 即macos和ios中预装的应用程序 内容 macOS 上的 Notes 可使用 AppleScript 编写脚本 要注销所有笔记 请打开脚本编辑器并使用以下内容创建一个新脚本 然后单击播放按钮
  • 防止 Realm 在更新对象时覆盖属性

    我已经在 iOS 中设置了一个 REST API 来连接领域对象 然而 我发现在我的对象中创建最喜欢的标志存在问题 我创建了一个最喜欢的布尔值 但是每次从 API 更新该对象时 它都会再次将最喜欢的值设置为默认 false 在这里 我希望这
  • 在 sed 中插入换行符 (Mac OS X)

    如何在 sed 的替换部分插入换行符 此代码不起作用 sed s 1234 n 1 g input txt gt output txt 其中 input txt 是 test1234foo123bar1234 和output txt应该是
  • 在 iOS Cocoa 静态库项目中使用 Objective-C 代码,在 iOS 应用程序项目中使用 Swift 代码

    我正在寻找一个简单的过程 用于将共享库项目中的 Objective C 代码与应用程序项目中的 Swift 代码相结合 但到目前为止 此序列尚未成功 启动Xcode 6 1 1 创建工作区测试 创建iOS Cocoa Touch静态库项目T
  • OS X - 输入“grails”命令后终端重置

    在我的 bash profile 中 我有以下几行 export GRAILS HOME usr share java grails export PATH PATH GRAILS HOME bin GRAILS HOME 是同一目录中 g
  • GameKit 蓝牙传输问题

    我正在尝试使用 GameKit 框架通过蓝牙发送文件 我遇到的问题是我一次只能发送一个 NSData 对象 但我需要将其保存在另一端 如果不知道文件名 这显然是不可能的 但我不知道如何传输它 我尝试将其转换为字符串NSData data N
  • 在 iMessage 应用程序中检查横向/纵向方向(扩展)

    见过很多检查方向的解决方案 但奇怪的是 没有一个有效 下面是代码片段 override func viewWillTransition to size CGSize with coordinator UIViewControllerTran
  • 阻止 NSView 实例接收鼠标事件

    我在窗口中有一个 NSView 并且核心动画层已打开 我时常使用此视图来显示带有动画的图像 我需要整个视图作为后层 而不仅仅是图像 在这个我称为 AnimationBaseView 的视图后面是用户交互的其他视图 一切都很好 除了 Anim
  • git pull origin master 返回致命错误:无效的 refspec

    问题是这样的 每当我这样做时 git pull https github com username reponame github io git 接下来是网址 我没有遇到任何问题 但是当我这样做时 git pull origin maste
  • Docker 进程被神秘的“Killed”消息杀死

    在 docker 容器中运行 python 脚本 一切似乎都运行顺利 看到一些 STDOUT 消息 大约 5 分钟后我得到了Killed消息 没有进一步的解释 并且该过程停止 查询数据库可能是磁盘空间问题 也可能是 OOM 问题 我不确定
  • Poppler 已安装:为什么在 python3 上使用 pdf2image 时出现错误?

    我正在使用Python3 7 4在 macOS 10 14 6 上 我正在尝试使用pdf2image将 pdf 文件转换为图像 所以我已经安装了poppler with Homebrew 当我尝试转换 PDF 时收到错误消息 Traceba
  • 当日期改变时 NSNotification?

    WebKit 的 WebHistory API 按日期分隔其项目 因此 当日期发生变化时 我需要重新分配任何 昨天 和 或 早些时候 今天 或 明天 标签 有 NSNotification 吗 或者我必须依赖 NSTimer 还是 perf
  • 如何让程序在登录时自动启动?

    如何设置菜单栏应用程序在登录时自动启动 我希望这是默认的 我可以简单地通过在 info plist 中添加一个 bool 来做到这一点吗 此解决方案仅适用于非沙盒应用程序 LSSharedFile此解决方案中使用的功能仅适用于非沙盒应用程序
  • 网守检疫问题与证书

    我们的应用程序已经过代码签名 我们的 Apple 证书是最新的 我们的应用程序的早期版本运行得很好 然而 当用户下载 DMG 时 在某些 Mac 上该应用程序会被隔离 但对于大多数用户而言 情况并非如此 因此 一些用户可以打开该应用程序 而
  • 身份验证后如何退出 Google

    所以我的应用程序可以选择使用 Google 登录 单击 Google 提供的按钮后 将打开一个 Web 视图并让用户输入其凭据 允许应用程序访问其信息后 应用程序将用户登录并将 SignInViewController 更改为 TabBar
  • 缩进 UILabel 的第二行(swift)

    var testLabel UILabel frame CGRectMake 8 0 tableView frame width 8 100 let testDesc dsfdddfdsfdsfsdfdsfdsfdsfdsfdsfsdfds

随机推荐