imageWithSize в Swift3
Я конвертирую проект из Xcode 7 iOS 9 Swift 2 в Xcode 8 iOS 10 Swift 3. Я позволил Xcode конвертировать в последнюю версию, и он произвел:
let artWork = delegate.musicPlayer.nowPlayingItem?.value(forProperty: MPMediaItemPropertyArtwork)
let imageForButton = (artWork as AnyObject).image(at: CGSize(width: 300, height: 300))
Этот результирующий код вылетает из приложения и выдает ошибку:
- [_ SwiftValue imageWithSize:]: нераспознанный селектор отправлен в экземпляр 0x17008cdf0 *** Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: '-[_SwiftValue imageWithSize:]: нераспознанный селектор отправлен в экземпляр
Для полноты исходной строки в Xcode 7 Swift 2 было:
let imageForButton = artWork?.imageWithSize(CGSizeMake(300, 300))
Как правильно выбрать размер изображения в Swift 3?
1 ответ
Решение
valueForProperty
возвращается Any?
вам нужно привести значение к фактическому типу
if let artWork = delegate.musicPlayer.nowPlayingItem?.value(forProperty: MPMediaItemPropertyArtwork) as? MPMediaItemArtwork {
let imageForButton = artWork.image(at: CGSize(width: 300, height: 300))
}