ねずみの横穴

我出来損ナイノ編程者為リ

Swift:配列変数に配列を代入したい

配列に配列を代入したい

let songs: [String] = {"津軽海峡冬景色", "俺ら東京行ぐだ", "蝋人形の館"} let favSongs : [String] = songs

なんのことはなかった。

MVVMモデルでViewModelを通してModelの配列をViewで受け取りたい時につかった。

View

import SwiftUI


struct AlbumView: View {
    @ObservedObject var albumViewModel = AlbumViewModel()
    private var columns: [GridItem] = Array(repeating: .init(.flexible(minimum: 10), spacing: CGFloat(0.0)), count: 9)
    
    var body: some View {
        
        let songs: [String] = albumViewModel.songs
        ScrollView {
            LazyVGrid(columns: columns) {
                ForEach(0..<songs.count){ num in
                    Text(songs[num])
                }
            }
        }
    }
}

ViewModel

import Foundation
import SwiftUI

class AlbumViewModel:ObservableObject {
    @Published var albumModel: AlbumModel = AlbumModel()
    
    init(){
        self.getSongs()
    }
    
    var songs: [String]{
        return albumModel.songs
    }

    func getSongs(){
        albumModel.getSongs()
    }
    
}

Model

import Foundation
import MediaPlayer

struct AlbumModel {
    var songs: [String] = []
    
    mutating func getSongs(){
        let mediaItems = MPMediaQuery.songs()
        if let collections = mediaItems.collections{
            for collection in collections{
                songs.append(collection.items[0].title!)
            }
        }
    }
}