Добавить обложку альбома в качестве подвида в Swift

Я использую следующий код, чтобы добавить воспроизводимую иллюстрацию в качестве подпредставления в моем приложении.

override func viewDidLoad() {
    super.viewDidLoad()

    let artWork = musicPlayer.nowPlayingItem?.valueForProperty(MPMediaItemPropertyArtwork)

    let image = artWork?.imageWithSize(CGSizeMake(300, 300))

    let imageView = UIImageView(image: image)

    imageView.frame = CGRectMake(1, 1, 300, 300)
    self.view.addSubview(imageView)
}

Мало того, что изображение не появляется, я получаю это предупреждение в консоли:

moveCircleAround[2385:753430] BSXPCMessage received error for message: Connection interrupted

Может ли кто-нибудь со знанием Swift помочь мне с этим?


person MortalMan    schedule 25.07.2015    source источник


Ответы (2)


Вы не сможете продолжить работу в бета-версии Xcode 7. Все взаимодействие с MPMusicPlayerController в настоящее время не работает в бета-версии iOS 9. Вместо этого используйте Xcode 6.4 и iOS 8.4, пока это не будет исправлено.

Редактировать Исправлено в бета-версии 5, поэтому теперь можно безопасно вернуться к Xcode 7.

person matt    schedule 25.07.2015
comment
Эй, Мэтт, у тебя есть источник по этому поводу? - person MortalMan; 25.07.2015
comment
Почему вы говорите, что взаимодействие с MPMediaItems нарушено? Например, я все еще могу получить доступ к musicPlayer.nowPlayingItem?.title. Кроме того, artWork == nil = false. - person MortalMan; 25.07.2015
comment
Что ж, мое приложение вообще не запускается, и я получаю сообщение BSXPCMessage. И другие жаловались на это на форумах. См., например, forums.developer.apple.com/thread/9414. - person matt; 25.07.2015
comment
Спасибо. Надеюсь, это будет исправлено в следующей бета-версии. - person MortalMan; 25.07.2015
comment
Что касается iOS 9 beta 5, я больше не вижу таких проблем. - person Adrian Schönig; 14.08.2015

Есть несколько случаев, когда этот код не может получить изображение обложки:

  • musicPlayer еще не имеет nowPlayingItem.
  • У nowPlayingItem нет обложки или она еще не загружена.
  • Художественное произведение не находит изображение соответствующего размера, указанного вами.

Попробуйте поставить точку останова в верхней части функции, пройтись по ней и посмотреть, какая переменная получает значение nil.

Также обратите внимание, что ошибка BSXPCMessage может указывать на то, что причиной является вторая проблема, описанная выше. Возможно, попробуйте другую песню и сначала проверьте, есть ли у нее обложка в приложении «Музыка».

(Обратите внимание, что вы можете упростить код, используя nowPlayingItem?.artwork вместо nowPlayingItem?.valueForProperty(MPMediaItemPropertyArtwork).)

person Adrian Schönig    schedule 25.07.2015