TestDegreeManager.swift 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. //
  2. // TestDegreeManager.swift
  3. // KdanAuto
  4. //
  5. // Created by 朱东勇 on 2023/2/9.
  6. //
  7. import Foundation
  8. class TestDegreeManager : NSObject {
  9. var degreeInfo = NSMutableDictionary()
  10. static var tdManager = TestDegreeManager()
  11. class func shared() -> TestDegreeManager {
  12. return tdManager
  13. }
  14. override init() {
  15. var path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
  16. path = NSString(string: path).appendingPathComponent("TestDegreeData.plist");
  17. if let info = try? NSDictionary.init(contentsOfFile: path) {
  18. degreeInfo = NSMutableDictionary.init(dictionary: info);
  19. }
  20. }
  21. func saveInfo() {
  22. var path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
  23. path = NSString(string: path).appendingPathComponent("TestDegreeData.plist");
  24. try! degreeInfo.write(toFile: path, atomically: true)
  25. }
  26. // Clear
  27. func clearAllHistory() {
  28. degreeInfo.removeAllObjects()
  29. }
  30. // Set
  31. func set(_ degree:Double, fileType:String?) {
  32. set(degree, fileType: fileType, type: nil)
  33. }
  34. func set(_ degree:Double, fileType:String?, type:String?) {
  35. set(degree, fileType: fileType, type: type, fileName: nil)
  36. }
  37. func set(_ degree:Double, fileType:String?, type:String?, fileName:String?) {
  38. set(degree, fileType: fileType, type: type, fileName: fileName, refFilePath: nil)
  39. }
  40. func set(_ degree:Double, fileType:String?, type:String?, fileName:String?, refFilePath:String?) {
  41. let key = String((fileType ?? "") + (type ?? "") + (fileName ?? "") + (refFilePath ?? ""))
  42. let number = NSNumber(floatLiteral: degree)
  43. degreeInfo.setValue(number, forKey: key)
  44. }
  45. //Get
  46. func degreeFor(_ fileType:String?) -> Double {
  47. return degreeFor(fileType, type: nil)
  48. }
  49. func degreeFor(_ fileType:String?, type:String?) -> Double {
  50. return degreeFor(fileType, type: type, fileName: nil)
  51. }
  52. func degreeFor(_ fileType:String?, type:String?, fileName:String?) -> Double {
  53. return degreeFor(fileType, type: type, fileName: fileName, refFilePath: nil)
  54. }
  55. func degreeFor(_ fileType:String?, type:String?, fileName:String?, refFilePath:String?) -> Double {
  56. let key = String((fileType ?? "") + (type ?? "") + (fileName ?? "") + (refFilePath ?? ""))
  57. if nil != degreeInfo.value(forKey: key) {
  58. let number = degreeInfo.value(forKey: key) as! NSNumber
  59. return number.doubleValue
  60. }
  61. return 0.0
  62. }
  63. }
  64. // File Info
  65. extension NSMutableDictionary {
  66. func degree() -> Double {
  67. return TestDegreeManager.shared().degreeFor(self.objc().fileType(),
  68. type: self.objc().type(),
  69. fileName: self.fileName(),
  70. refFilePath: self.refFilePath())
  71. }
  72. }