Music_Player3/MusicPlayer/MP/MPSideA/Models/Load/MPSideA_LoadDataMusic.swift
2024-05-11 09:48:37 +08:00

108 lines
4.1 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// LoadDataMusic.swift
// MusicPlayer
//
// Created by Mr.Zhou on 2024/4/1.
//
import UIKit
///
class MPSideA_LoadDataMusic: NSObject {
static let shared = MPSideA_LoadDataMusic()
///
var alllistMusics:[MPSideA_MusicViewModel] = []
///
var userlistMusics:[MPSideA_MusicViewModel] = []
///
var locallistMusics:[MPSideA_MusicViewModel] = []
///-0
var homeZeroMusics:[MPSideA_MusicViewModel] = []
///-1ablum1
var homeFirstMusics:[MPSideA_MusicViewModel] = []
///-2ablum2
var homeSecondMusics:[MPSideA_MusicViewModel] = []
///-3ablum3
var homeThirdMusics:[[MPSideA_MusicViewModel]] = []
private override init() {
super.init()
if (UserDefaults.standard.bool(forKey: "FirstBulid")) == false {
//
plistDatatoModel()
UserDefaults.standard.set(true, forKey: "FirstBulid")
print("Create data successfully")
}
}
///
/// - Parameter complete:
public func reloadListData() {
//
alllistMusics = []
userlistMusics = []
locallistMusics = []
homeZeroMusics = []
homeFirstMusics = []
homeSecondMusics = []
homeThirdMusics = []
//
let all = MPSideA_MusicModel.fetchAll()
all.forEach { item in
//
if item.isLocal == true {
locallistMusics.append(.init(item))
}else {
userlistMusics.append(.init(item))
}
//
alllistMusics.append(.init(item))
}
//
homeFirstMusics = locallistMusics.filter{($0.type == .First)}
homeSecondMusics = locallistMusics.filter{($0.type == .Second)}
homeThirdMusics = convertToTwoArray(locallistMusics.filter{($0.type == .Third)}, raw: 3)
//
homeZeroMusics.append(homeThirdMusics.last!.last!)
homeZeroMusics.append(homeSecondMusics.last!)
homeZeroMusics.append(homeFirstMusics.last!)
if userlistMusics.count != 0 {
homeZeroMusics.append(userlistMusics.last!)
}
}
//Plist
private func plistDatatoModel() {
let plistPath = Bundle.main.path(forResource: "Resource", ofType: "plist")!
let dictArray = NSArray(contentsOfFile: plistPath)
dictArray?.forEach({ (item) in
let dict = item as! [String : AnyObject]
let music = MPSideA_MusicModel.create()
music.identifier = dict["identifier"] as? String
music.title = dict["title"] as? String
music.duration = dict["duration"] as! Double
music.cover = UIImage(named: dict["cover"] as! String)!.pngData()!
music.author = dict["author"] as? String
music.album = dict["album"] as! Int16
music.isLocal = dict["isLocal"] as! Bool
music.path = dict["path"] as! String
music.creationTime = Date().timeZone()
})
MPSideA_MusicModel.save()
}
///
/// - Parameters:
/// - array:
/// - raw:
/// - Returns:
private func convertToTwoArray(_ array:[MPSideA_MusicViewModel], raw:Int) -> [[MPSideA_MusicViewModel]] {
let twoDArray = stride(from: 0, to: array.count, by: raw).map { (index) -> [MPSideA_MusicViewModel] in
if (index + raw) > array.count {
return Array(array[index...])
} else {
return Array(array[index..<index + raw])
}
}
return twoDArray
}
}