123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- import Foundation
- private let kHeaderFooterInfoSaveKey = "kHeaderFooterInfoSaveKey"
- class KMHeaderFooterManager: NSObject, NSCoding {
- var headFooterObjects: [KMHeaderFooterObject] = []
- static let defaultManager = KMHeaderFooterManager()
-
- override init() {
- super.init()
- self.reloadData()
- }
-
- required init?(coder: NSCoder) {
- if let data = coder.decodeObject(forKey: "headFooterObjects") {
- headFooterObjects = data as? [KMHeaderFooterObject] ?? []
- }
- }
-
- func encode(with coder: NSCoder) {
- coder.encode(headFooterObjects, forKey: "headFooterObjects")
- }
- func reloadData() {
- do {
- if let storedData = UserDefaults.standard.value(forKey: kHeaderFooterInfoSaveKey) as? Data {
- NSKeyedUnarchiver.setClass(KMHeaderFooterObject.self, forClassName: "KMHeaderFooterObject")
- NSKeyedUnarchiver.setClass(KMHeaderFooterManager.self, forClassName: "KMHeaderFooterManager")
- if let man = NSKeyedUnarchiver.unarchiveObject(with: storedData) as? KMHeaderFooterManager {
- self.headFooterObjects = man.headFooterObjects
- print(man)
- }
- }
- } catch {
- // 解档失败,处理错误情况
- print("Error unarchiving data: \(error)")
- }
- }
-
- var onlyHeaderFooterObjects: [KMHeaderFooterObject] {
- return headFooterObjects.filter { !$0.isBates }
- }
- var onlyBatesObjects: [KMHeaderFooterObject] {
- var arr: [KMHeaderFooterObject] = []
- for obj in headFooterObjects {
- if KMDataVersionManager.updateBatesData() {
- KMDataVersionManager.refrshBatesData(bates: obj)
- store()
- }
- if obj.isBates {
- arr.append(obj)
- }
- }
- return arr
- }
- var dateFormatArray: [String] {
- return [
- "m/d",
- "m/d/yy",
- "m/d/yyyy",
- "mm/dd/yy",
- "mm/dd/yyyy",
- "d/m/yy",
- "d/m/yyyy",
- "dd/mm/yy",
- "dd/mm/yyyy",
- "mm/yy",
- "mm/yyyy",
- "m.d.yy",
- "m.d.yyyy",
- "mm.dd.yy",
- "mm.dd.yyyy",
- "mm.yy",
- "mm.yyyy",
- "d.m.yy",
- "d.m.yyyy",
- "dd.mm.yy",
- "dd.mm.yyyy",
- "yy-mm-dd",
- "yyyy-mm-dd"
- ]
- }
- func removeHeaderFooter(_ obj: KMHeaderFooterObject) -> Bool {
- headFooterObjects.removeAll { $0 === obj }
- store()
- return true
- }
-
- func removeAllHeaderFooter() -> Bool {
- headFooterObjects.removeAll()
- store()
- return true
- }
- func addHeaderFooter(_ obj: KMHeaderFooterObject) -> Bool {
- headFooterObjects.insert(obj, at: 0)
- store()
- return true
- }
- func store() {
- do {
- let encodedObject = try NSKeyedArchiver.archivedData(withRootObject: self, requiringSecureCoding: false)
- UserDefaults.standard.set(encodedObject, forKey: kHeaderFooterInfoSaveKey)
- UserDefaults.standard.synchronize()
- } catch {
- print("Error while encoding object: \(error)")
- }
- }
- func clearStored() {
- UserDefaults.standard.removeObject(forKey: kHeaderFooterInfoSaveKey)
- UserDefaults.standard.synchronize()
- }
- func fetchHeaderFooterAvailableName() -> String {
- var availableIndex = 0
- let nameArray = onlyHeaderFooterObjects.map { $0.id }
- for string in nameArray {
- if string.hasPrefix("HeaderFooter") {
- let index = Int(string.suffix(from: "HeaderFooter".endIndex)) ?? 0
- if index >= availableIndex {
- availableIndex = index + 1
- }
- }
- }
- return "HeaderFooter\(availableIndex)"
- }
- func fetchBatesAvailableName() -> String {
- var availableIndex = 0
- let nameArray = onlyBatesObjects.map { $0.id }
- for string in nameArray {
- if string.hasPrefix("Bates") {
- let index = Int(string.suffix(from: "Bates".endIndex)) ?? 0
- if index >= availableIndex {
- availableIndex = index + 1
- }
- }
- }
- return "Bates\(availableIndex)"
- }
- }
|