swift2 使用Swift 2编程从永久ID中查找歌曲

xjreopfe  于 2022-11-06  发布在  Swift
关注(0)|答案(1)|浏览(167)

我是Swift编程的初学者,正在尝试重新编写我在网上找到的代码,从持久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)如何使用函数调用这段代码?

ddarikpa

ddarikpa1#

是的,我们可以在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
}

相关问题