#swift
#swift
Вопрос:
Я пытаюсь вернуть JSON к завершению:
func getNowPlayingView(completion: @escaping ([NowPlayingData]) -> ()) {
let podcast = try! JSONDecoder().decode(MusicPlayer.NowPlayingData.self, from: Data(MusicPlayer.JN.utf8))
//print(data!)
// let episode = podcast.programs
DispatchQueue.main.async{
// The array is stored under programs now
completion(podcast)
}
}
Однако на completion(podcast)
я получаю Cannot convert value of type 'MusicPlayer.NowPlayingData' to expected argument type '[MusicPlayer.NowPlayingData]'
struct NowPlayingData: Codable, Identifiable {
var id = UUID()
var artist : String
var song : String
var cover : String
}
Вот что у меня получилось
Вы можете видеть на снимке экрана, что он отправляет строку JSON в представление.
код для этого следующий
func getNowPlayingView(completion: @escaping (String) -> Void){
completion(MusicPlayer.JN)
}
Обновить
Немного изменен код, чтобы отразить комментарии вадиана, и мое представление сошло с ума
struct MediaPlayerView: View {
@State private var uuid = UIDevice.current.identifierForVendor?.uuidString
@State private var playingtye = ""
@State var NowPlayingInfo: [MusicPlayer.NowPlayingData]
@State private var playing = ""
var body: some View {
VStack{
Text(String(uuid!))
Text(playingtye)
Text(NowPlayingInfo.first!.artist)
Text(playing)
}
.onAppear{
Timer.scheduledTimer(withTimeInterval: 2.0, repeats: true) { (timer) in
// do stuff 42 seconds later
MusicPlayer().gettype { type in
self.playingtye = type
}
MusicPlayer().getNowPlayingView { (podcast) in
self.NowPlayingInfo = podcast
}
}
if(MusicPlayer.shared.player!.rate != 0)
{
self.playing = "yes"
}
else
{
self.playing = "no"
}
}
}
}
Комментарии:
1. Вы декодируете один объект, а типом параметра закрытия является массив. Это классическое несоответствие типов, как четко указано в ошибке.
2. Итак, как вы отправляете отдельный объект
3. Измените тип замыкания на
(NowPlayingData)->()
.4. @vadian не удается преобразовать значение типа ‘String’ в ожидаемый тип аргумента ‘Data’
5. Во-первых, я написал свои комментарии перед вашей правкой, а во-вторых, пожалуйста, научитесь читать сообщения об ошибках. Несоответствие типов — это очень простая и очень понятная ошибка.