3

私は Swift プログラミングの初心者で、オンラインで見つけた Finds A Song from Persistent IDというコードを書き直そうとしています。元のコードは次の Web サイトにあります。

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 で書き直すことができます。非推奨のものがあるかどうかを確認するには、MPMediaItemおよびMPMediaQueryに関する Apple ドキュメントを確認してください。クラスまたはそのメソッドの一部が非推奨である場合は、そこに記載されています。

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 に答える