Поиск песни из постоянного идентификатора с использованием программирования Swift 2

Я новичок в программировании на Swift и пытаюсь переписать найденный в Интернете код, который находит песню с помощью 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) Как мне вызвать этот код с помощью функции?


person George Lee    schedule 12.12.2015    source источник


Ответы (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
}
person James Zaghini    schedule 12.12.2015
comment
Это полностью ответило на мои вопросы. Спасибо. - person George Lee; 12.12.2015