3

我是 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)我将如何使用函数调用此代码?

4

1 回答 1

10

是的,我们可以用 Swift 重写它。要查找是否已弃用某些内容,请查看 Apple 文档中的MPMediaItemMPMediaQuery。如果不推荐使用该类或其某些方法,则会在此处注明。

这是用 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
}
于 2015-12-12T02:16:56.030 回答