检索 iOS 中按上次播放时间排序的歌曲列表

2023-11-24

我需要获得一份清单N按顺序最近从 iOS 设备播放的歌曲。

目前我能想象的唯一方法就是将所有歌曲都通过一个MPMediaQuery并手动对它们进行排序lastPlayedDate.

这是一项可能昂贵的操作,我想知道是否有更好的方法。


编辑:经过一些测试,这是一个非常昂贵的操作。在包含 2500 首歌曲的测试库中,大约需要 20 秒才能:

  1. 获取所有歌曲。
  2. 为所有从未播放过的歌曲指定日期(1970 年 1 月 1 日)。
  3. 按日期订购。
  4. 取第一个N条目。

任何改进建议将不胜感激。


编辑2:现在解决了,但只是为了记录,这就是我正在做的事情。

我正在使用块进行排序,如下所述:https://stackoverflow.com/a/805589/112702。只需将排序方法更改为 Bryan 的答案中的方法,我在 iPod Touch 3 上的速度就提高了近 20 倍。


一种方法是采用数组MPMediaItem你从MPMediaQuery并按以下方式排序MPMediaItemPropertyLastPlayedDate使用一个NSSortDescriptor:

NSTimeInterval start  = [[NSDate date] timeIntervalSince1970];

MPMediaQuery *songsQuery = [MPMediaQuery songsQuery];
NSArray *songsArray = [songsQuery items];

NSSortDescriptor *sorter = [NSSortDescriptor sortDescriptorWithKey:MPMediaItemPropertyLastPlayedDate
                                                         ascending:NO];
NSArray *sortedSongsArray = [songsArray sortedArrayUsingDescriptors:@[sorter]];

NSTimeInterval finish = [[NSDate date] timeIntervalSince1970];
NSLog(@"Execution took %f seconds.", finish - start);

这将按照最近播放的顺序对新数组进行排序。我在 iPhone 4S 上使用 2000 首歌曲进行了测试,耗时 0.98 秒。

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

检索 iOS 中按上次播放时间排序的歌曲列表 的相关文章

  • iOS 如何触发视频退出全屏后继续播放?

    我正在构建一个在 iOS 中播放视频的网站 我有一个在 iOS 中工作的全屏按钮 但是退出全屏时视频会暂停 有谁知道一种方法可以强制视频在退出全屏时继续播放 或者如何设置一个侦听器来触发视频在退出全屏时自动播放 这是我的代码
  • 如何将CIFilter应用到UIView上?

    根据Apple docs 过滤属性CALayer不支持iOS 当我使用正在申请的应用程序之一时CIFilter to UIView即 Splice Funimate 和 Artisto 的视频编辑器 Videoshow FX 这意味着我们可
  • 使用 BGTaskScheduler 进行后台获取与调试模拟完美配合,但在实践中却不起作用

    我在 appDelegate 的 didFinishLaunchingWithOptions 中注册后台获取任务 BGTaskScheduler shared register forTaskWithIdentifier Backgroun
  • Swift:协议、结构、类

    我开始学习 Swift 语言 但在理解协议 结构和类方面遇到了困难 我来自 Android 方面的编程 所以我相信 Swift 协议基本上是 Java 接口 其中每一个的正确用例是什么 这些类比并不 完全 正确 但这就是我所理解的要点 是的
  • 子类 PFObject 上的 PFUser 属性

    我使用以下类 动态属性以及 m 文件中的 load 和 parseClassName 方法 对 PFObject 进行了子类化 interface DAOpponents PFObject
  • 如何去掉 UIWebView 上的状态栏背景?

    从 iOS 11 开始 当UIWebView全屏时 状态栏上会出现与屏幕颜色相同的假背景UIWebView背景 有人知道如何摆脱它吗 甚至添加IUWebView到故事板并使其全屏将使状态栏背景出现 我一直在尝试编辑 UIWebView 的大
  • 如何向 UIView 添加大小调整手柄?

    我试图根据用户请求在运行时动态创建视图 UIImageView 和 UITextView 然后允许用户移动它们并调整它们的大小 除了调整大小之外 我的一切都工作得很好 我尝试使用捏合手势识别器 但发现它对于我想要的东西来说太笨拙了 因此 我
  • 如何右对齐 UILabel?

    Remark 实施 myLabel textAlignment right does not解决了我的问题 这不是我所要求的 我想要实现的是让标签对齐右对齐 为了更清楚地说明 这就是如何left对齐外观 就是这样justify对齐外观 if
  • 将自定义图像设置为 UIBarButtonItem 但它不显示任何图像

    我想将自定义图像设置为 UIBarButtonItem 但它只显示周围的矩形框并且不显示实际图像 func setupBrowserToolbar let browser UIToolbar frame CGRect x 0 y 20 wi
  • iOS UITableViewCell cell.imageView 设置圆角

    嘿我正在尝试设置cell imageView s cornerRadius 但似乎不起作用 cell imageView layer cornerRadius 9 它会起作用还是我应该添加自定义UIImageView在我的牢房里有圆角吗 我
  • 通过 renderInContext 定位要绘制的视图:

    我想画一个UIView在我目前的CGGraphicsContext 我画的是UIView via renderInContext 但它的位置不正确 始终位于左上角 我拥有所有的价值观UIView可用于绘制UIView CGRect fram
  • 如何在iOS的Delphi程序中使用IPv6协议

    我尝试在我的移动程序中使用 IPv6 协议 我的服务器位于 NAT 后面的 LAN 内 在服务器上我使用IP端口3000 我已经组织了从路由器端口 45500 到服务器端口 3000 的虚拟服务器 端口转发 在服务器上 我运行 ipconf
  • 从 iOS 13 开始安排 iOS 后台任务

    我正在实现用于更新数据的BackgroundTasks 框架 但我遇到了以下问题 无法计划刷新App 错误域 BGTaskSchedulerErrorDomain代码 1 空 无法安排数据提取 Error Domain BGTaskSche
  • NSTimer 不触发选择器

    在带有 ARC 的 ios5 0 中 在我的 rootviewcontroller 中 我调用由应用程序委托持有的安全管理器对象中的方法 在该方法中 我设置计时器如下 NSTimer timer NSTimer scheduledTimer
  • iOS 解决方法:在没有 CSS 属性的情况下平滑滚动 滚动行为:平滑?

    编辑 我找到了一个 jQuery 解决方案 https codepen io chriscoyier pen dpBMVP https codepen io chriscoyier pen dpBMVP这个确实可以在 iOS 上运行 我想
  • 可以获取位置,但无法获取航向

    我目前只使用模拟器 但我在 iOS 模拟器上快速使用 CoreLocation 时遇到问题 我得到此代码打印的位置更新 但从未得到标题 我不想当然 我正在尝试制作一个指南针类型的应用程序 它将显示目标的方位 class CompassVie
  • NSCFData fastCharacterContents 崩溃? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我目前在控制台中收到此崩溃日志 20
  • ios - 在哪里放置 s.static_framework = true

    我在 CocoaPods 中的级别为 0 当我使用pod install有一个错误说 The Pods App target has transitive dependencies that include static framework
  • 将 UIButton 中的图像缩放到 AspectFit?

    我想将图像添加到 UIButton 并且还想缩放图像以适合 UIButton 使图像变小 请告诉我该怎么做 这是我尝试过的 但它不起作用 将图像添加到按钮并使用setContentMode self itemImageButton setI
  • ios - Gamekit 的 GKOctree 未找到元素

    我正在尝试使用GKOctree https developer apple com documentation gameplaykit gkoctree用于高效检索 3D 空间中的对象 然而 以下代码似乎没有按预期工作 import Gam

随机推荐

  • 列出 SQL Server 2005 中哪些列具有全文索引

    如何列出数据库中具有全文索引的所有表 列 select distinct object name fic object id table name name column name from sys fulltext index colum
  • 使用 Amazon RedShift 透视表

    我在 Amazon RedShift 中有多个表 它们遵循多个维度列和一对指标名称 值列的模式 DimensionA DimensionB MetricName MetricValue dimA1 dimB1 m1 v11 dimA1 di
  • 在 ruby​​ 中使用 sjcl.js 创建的 AES 解密

    您好 让我们假设客户端有一个密钥 该密钥不通过与加密数据相同的通道传输 我想要完成的是解密结果斯坦福 Javascript 加密库 sjcl 在红宝石中 或者对于具有支持 AES 的加密库的任何其他语言的概括 这是我在 javascript
  • ?#iefix 如何解决 IE6-IE8 中的网页字体加载问题?

    网上有很多这样的文章 http www fontspring com blog fixing ie9 font face problems建议添加一个 iefix到 eot 网址 我很想知道how这能解决问题吗 谢谢 IE8 及更早版本的
  • 405 尽管 CORS 仍不允许方法

    我正在尝试使用 Angular 开发前端应用程序 由于我添加了授权标头对于 HTTP POST 和 GET 请求 我得到405 不允许的方法 尽管我似乎允许服务器端的一切 我的 Chrome 浏览器中的调试器说它要求Access Contr
  • XGBoost 从增强器对象中获取分类器对象?

    我通常使用以下方法来表达特征重要性 regr XGBClassifier regr fit X y regr feature importances 其中 type regr 是 但是 我有一个腌制的 mXGBoost 模型 解包后会返回一
  • Nuxt + Vuetify。如何应用主题颜色

    我正在使用 Nuxt js Vuetify js 项目 查看文件assets style app styl we have Import and define Vuetify color theme https vuetifyjs com
  • 如何删除 Chart.js 中轴的线条/规则?

    我设法使用以下方法删除图表中的所有水平线 规则 scales xAxes gridLines display false 但我也想去掉代表 Y 轴的规则 条 但我想保留标签 不幸的是我找不到任何选择 我只能删除整个轴 包括标签 我正在使用
  • MongoDB - 错误:getMore 命令失败:找不到游标

    我需要创建一个新字段sid大约 500K 文档集合中的每个文档 每个sid是唯一的并且基于该记录的现有记录roundedDate and stream fields 我使用以下代码来执行此操作 var cursor db getCollec
  • ajax加载tab后的回调

    如何将一些代码应用于 ajax 加载选项卡的内容 我尝试在加载的内容中使用 document ready 但这阻止了 css 样式的加载 不知道为什么 有回调函数吗 我应该以其他方式在加载的文档中使用 document ready 和样式吗
  • Matlab 中图例标记的高级定制

    It is relatively simple to add basic modifications to markers in matlab legends The legend produced by the following cod
  • 如何在Swing java中的JTable的一行中添加按钮

    我制作了一个 swing GUI 其中包含带有一些行和列的 JTable 我应该如何向 JTable 中的行添加一个按钮 您不将其添加到行中 而是将其添加到单元格中 本教程描述您需要什么
  • 使用 gradle 产品风味删除 AndroidManifest 元素

    我正在设置一个包含一些产品风格的 Android Gradle 项目 我想要
  • 将 CSV 值读入列表字典的最 Pythonic 方法

    我有一个 CSV 文件 其数据列顶部的标题如下 a b c 1 2 3 4 5 6 7 8 9 我需要在列表字典中阅读它 desired result a 1 4 7 b 2 5 8 c 3 6 9 当阅读本文时DictReader我正在使
  • Symfony Doctrine 数组结果的展平数组结果

    通过存储库 我得到了一个数组结果 每个数组都是一个实体对象 如下所示 array 0 gt object of type entity 1 gt another object of type entity 2 gt another obje
  • 如何在 MATLAB 中删除元胞数组内的零项?

    我在 MATLAB 中有一个元胞数组 可以说cell arr它有零条目和非零单元格条目 例如 cell arr 0 0 0 0 0 1x3 cell 1x3 cell 1x3 cell 1x3 cell 有人可以告诉我如何从cell arr
  • 从 Facebook 获取长期访问令牌

    据我了解 最近Facebook决定删除offline access权限 并引入了一种称为长期访问令牌的概念 该令牌的最长有效期为 60 天 有谁知道如何使用 Facebook JavaScript SDK 获取此访问令牌 有一种方法可以将其
  • VariableDoesNotExist:在 u'None' 中查找键 [val2] 失败

    我正在得到一个VariableDoesNotExist以下代码片段出现错误时obj1 page is None obj1 val1 default obj1 page val2 通常 Django 模板不关心属性访问None values
  • 父 DIV 中的圆角不影响子 DIV

    所以 我正在尝试在 CSS3 中使用圆角 不在 IE 中 不关心它是否在那里工作 并且我有一个 DIV 我的所有内容都在其中看起来非常漂亮 我遇到的问题是 有些子 DIV 没有被父级的圆角 掩盖 我不是在寻找孩子继承圆角 我只想让父级内部的
  • 检索 iOS 中按上次播放时间排序的歌曲列表

    我需要获得一份清单N按顺序最近从 iOS 设备播放的歌曲 目前我能想象的唯一方法就是将所有歌曲都通过一个MPMediaQuery并手动对它们进行排序lastPlayedDate 这是一项可能昂贵的操作 我想知道是否有更好的方法 编辑 经过一