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!) } } } }