// // DataModel.swift // KdanAuto // // Created by 朱东勇 on 2022/11/21. // import Foundation let kLoadDirectoryPathKey : String = "kLoadDirectoryPathKey"; let kOriginPathComponent : String = "Origin Files" let kResultPathComponent : String = "Result Files" let kCheckPathComponent : String = "Check Files" let kLatestReportIDKey : String = "LatestReportID" let kComparativeDifferenceKey : String = "ComparativeDifference" class DataModel : NSObject { static var shared : DataModel = DataModel() var _directoryPath : String = "" /// Setter & Getter public func setDirectoryPath(_ path:String) { let userDefaults = UserDefaults.standard userDefaults.setValue(path, forKey: kLoadDirectoryPathKey) userDefaults.synchronize() } public func directoryPath() -> String { var path = UserDefaults.standard.value(forKey: kLoadDirectoryPathKey) if path == nil { path = "" } return path as! String } // Expand public func setIsExpand(_ fileType:String, expand:Bool) { let userDefaults = UserDefaults.standard if expand { userDefaults.setValue("true", forKey: String("\(fileType)-expand")) }else { userDefaults.setValue(nil, forKey: String("\(fileType)-expand")) } userDefaults.synchronize() } public func isExpand(_ fileType:String) -> Bool { let userDefaults = UserDefaults.standard return userDefaults.value(forKey: String("\(fileType)-expand")) != nil } public func originFilesFor(_ fileType:String, type:String) -> [String] { var path = self.directoryPath() as NSString path = path.appendingPathComponent(fileType) as NSString path = path.appendingPathComponent(type) as NSString path = path.appendingPathComponent(kOriginPathComponent) as NSString if !FileManager.default.fileExists(atPath: path as String) { return [] } let items = try? FileManager.default.subpathsOfDirectory(atPath: path as String) let subPaths = NSMutableArray(array: items ?? []) subPaths.remove(".DS_Store") var index = Int(0) while (index < subPaths.count) { let item = subPaths.object(at: index) index += 1 let filePath = path.appendingPathComponent(item as! String); var isDirectory = ObjCBool(false) if (!FileManager.default.fileExists(atPath: filePath, isDirectory: &isDirectory) || isDirectory.boolValue || NSString(string: filePath).contains(".DS_Store")) { subPaths.remove(item); index -= 1 } } return subPaths as! [String] } public func generaNewReportID() -> String { let string = NSString.init(format: "%.0f", NSDate.init().timeIntervalSince1970) as String let userDefaults = UserDefaults.standard userDefaults.set(string, forKey: kLatestReportIDKey) userDefaults.synchronize() return string } public func latestReportID() -> String? { let userDefaults = UserDefaults.standard return userDefaults.value(forKey: kLatestReportIDKey) as? String } public func comparativeDifference() -> Int { let userDefaults = UserDefaults.standard if (userDefaults.value(forKey: kComparativeDifferenceKey) != nil) { return userDefaults.value(forKey: kComparativeDifferenceKey) as? Int ?? Int(255 * 0.03) } return Int(255 * 0.03) } public func setComparativeDifference(_ comparativeDifference:Int) { let userDefaults = UserDefaults.standard userDefaults.set(comparativeDifference, forKey: kComparativeDifferenceKey) userDefaults.synchronize() } /// Save Data }