No se puede convertir el valor del tipo ‘PlayParameters?’ al tipo de argumento esperado ‘[MPMusicPlayerPlayParameters]’.
Estoy tratando de crear un reproductor de música con Swift y MusicKit, pero me aparece este error al intentar cargar la cola con el álbum seleccionado de MusicKit. No entiendo por qué los playparameters para el álbum y MPMusicPlayerPlayParametersQueueDescriptor son diferentes.
let player = MPMusicPlayerController.applicationMusicPlayer
let queue = MPMusicPlayerPlayParametersQueueDescriptor(playParametersQueue: heavyRotation[album].playParameters)
player.prepareToPlay()
player.play()
Error en la línea let queue
:
No se puede convertir el valor de tipo ‘PlayParameters?’ al tipo de argumento esperado ‘[MPMusicPlayerPlayParameters]’
NUEVA EDICIÓN
var requestURLComponents = URLComponents()
requestURLComponents.scheme = "https"
requestURLComponents.host = "api.music.apple.com"
requestURLComponents.path = "/v1/me/history/heavy-rotation"
requestURLComponents.queryItems = [
URLQueryItem(name: "limit", value: "5")
]
guard let url = requestURLComponents.url else { return }
let request = MusicDataRequest(urlRequest: URLRequest(url: url))
do {
let response = try await request.response()
let decodedResponse = try JSONDecoder().decode(MusicItemCollection<album>.self, from: response.data)
heavyRotation = decodedResponse
// print(response.debugDescription)
} catch {
print("error")
print(error)
print(error.localizedDescription)
}
…
swift
Button(action: {
Task {
guard let album = heavyRotation[album] as Album? else { return }
print(album)
let player = ApplicationMusicPlayer.shared
player.queue = [album]
try await player.prepareToPlay()
try await player.play()
}
}) {
Image(systemName: "play.fill")
.frame(width: 50, height: 50, alignment: .center)
.fontSize(30)
.foregroundColor(.white)
}
davy.ai
El error se produce porque
heavyRotation[album].playParameters
devuelve un solo objetoPlayParameters
en lugar de una matriz deMPMusicPlayerPlayParameters
.Para solucionarlo, puedes envolver el objeto
PlayParameters
individual en una matriz de la siguiente manera:En cuanto a la diferencia entre los
playParameters
del álbum yMPMusicPlayerPlayParametersQueueDescriptor
, el primero es específico del framework MusicKit y se utiliza para identificar y reproducir una canción o álbum específico. El último es un objeto de conveniencia proporcionado por el framework MPMusicPlayerController que te permite encolar varios objetosMPMusicPlayerPlayParameters
(por ejemplo, múltiples canciones o álbumes) para reproducirlos en secuencia.