123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- 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) {
- headFooterObjects = coder.decodeObject(forKey: "headFooterObjects") as? [KMHeaderFooterObject] ?? []
- }
- func encode(with coder: NSCoder) {
- coder.encode(headFooterObjects, forKey: "headFooterObjects")
- }
- func reloadData() {
- let storedData = UserDefaults.standard.value(forKey: kHeaderFooterInfoSaveKey) as? Data
- if let storedData = storedData {
- if let manager = try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(storedData) as? KMHeaderFooterManager {
-
- self.headFooterObjects = manager.headFooterObjects
- }
- }
- }
- // static func defaultManager() -> KMHeaderFooterManager {
- // let storedData = UserDefaults.standard.value(forKey: kHeaderFooterInfoSaveKey) as? Data
- // if let storedData = storedData {
- // if let manager = try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(storedData) as? KMHeaderFooterManager {
- // return manager
- // }
- // }
- // let manager = KMHeaderFooterManager()
- // if manager.headFooterObjects.isEmpty {
- // manager.headFooterObjects = []
- // }
- // return manager
- // }
- 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)"
- }
- }
|