Реализовать менеджер треков
Условие задачи
Реализовать менеджер треков который выводит список треков
swiftstruct Track: CustomStringConvertible {
let title: String
var description: String { title }
}
protocol IAlbumService {
func loadTracks(albumId: String, completion: @escaping ([Track]) -> Void)
}
final class AlbumService: IAlbumService {
func loadTracks(albumId: String, completion: @escaping ([Track]) -> Void) {
DispatchQueue.global().async {
let tracks: [Track]
switch albumId {
case "1":
tracks = [
Track(title: "One, 1"),
Track(title: "Two, 1"),
Track(title: "Three, 1"),
Track(title: "Four, 1")
]
case "2":
tracks = [
Track(title: "One, 2"),
Track(title: "Two, 2"),
Track(title: "Three, 2")
]
case "3":
tracks = [
Track(title: "One, 3"),
Track(title: "Two, 3")
]
default:
tracks = []
}
DispatchQueue.main.asyncAfter(deadline: .now() + Double.random(in: 0.1...0.4)) {
completion(tracks)
}
}
}
}
final class TracksManager {
let albumService = AlbumService()
func loadTracks(albumIds: [String], completion: @escaping ([Track]) -> Void) {
// Загрузка треков
// Написать код
}
}
let manager = TracksManager()
let albumIds: [String] = ["1", "2", "3"]
manager.loadTracks(albumIds: albumIds, completion: { tracks in
// вывести список треков
print(tracks)
})
RunLoop.main.run(until: Date(timeIntervalSinceNow: 3))