使用 Swift 2 编程从 Persistent ID 中查找歌曲
Posted
技术标签:
【中文标题】使用 Swift 2 编程从 Persistent ID 中查找歌曲【英文标题】:Finding a Song from Persistent ID using Swift 2 programming 【发布时间】:2015-12-12 00:45:05 【问题描述】:我是 Swift 编程的初学者,正在尝试重写我在网上找到的 Finds A Song from Persistent ID 的代码。原始代码在这个网站上找到:
http://www.ios-developer.net/iphone-ipad-programmer/development/songs-and-playlists/find-song-from-persistent-id
我想用 Swift 2 编写这段代码(我不会使用 Objective-C),但我缺乏翻译它的知识和经验。
代码:
MPMediaItem *song;
MPMediaPropertyPredicate *predicate;
MPMediaQuery *songQuery;
predicate = [MPMediaPropertyPredicate predicateWithValue: MyPersistentIdString forProperty:MPMediaItemPropertyPersistentID];
songQuery = [[MPMediaQuery alloc] init];
[songQuery addFilterPredicate: predicate];
if (songQuery.items.count > 0)
//song exists
song = [songQuery.items objectAtIndex:0];
CellDetailLabel = [CellDetailLabel stringByAppendingString:[song valueForProperty: MPMediaItemPropertyTitle]];
我的问题:
1) 这段代码是否可以重写为 Swift,它是否仍然足够最新而没有折旧?
2) 我将如何使用函数调用此代码?
【问题讨论】:
【参考方案1】:是的,我们可以用 Swift 重写它。要查找是否已弃用某些内容,请查看 Apple 文档中的 MPMediaItem 和 MPMediaQuery。如果该类或其某些方法已被弃用,则会在此处注明。
这是用 Swift 重写为函数的代码。它传入persistentIdString
并返回一个可选的MPMediaItem
func findSongWithPersistentIdString(persistentIDString: String) -> MPMediaItem?
let predicate = MPMediaPropertyPredicate(value: persistentIDString, forProperty: MPMediaItemPropertyPersistentID)
let songQuery = MPMediaQuery()
songQuery.addFilterPredicate(predicate)
var song: MPMediaItem?
if let items = songQuery.items, items.count > 0
song = items[0]
return song
【讨论】:
这完全回答了我的问题。谢谢。以上是关于使用 Swift 2 编程从 Persistent ID 中查找歌曲的主要内容,如果未能解决你的问题,请参考以下文章
Cocoa Xcode:使用 Swift 4 for Mac 以编程方式从 AppDelegate 打开窗口控制器?
Swift编程语言中如何实现自定义类型的for-in循环(基于Swift 2.2)
在 Swift 中以编程方式从 MainViewController 切换到 .xib 视图?
如何从 Yesod 的 Persistent 中获取原始键值?