|
@@ -1,6 +1,11 @@
|
|
|
import Foundation
|
|
|
|
|
|
+let kHeaderFooterFolderPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.applicationSupportDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last?.stringByAppendingPathComponent(Bundle.main.bundleIdentifier!).stringByAppendingPathComponent("headerFooter")
|
|
|
+let kHeaderFooterPlistPath = kHeaderFooterFolderPath?.stringByAppendingPathComponent("headerFooter.plist") ?? ""
|
|
|
+let kHeaderFooterRemovedKey = "kHeaderFooterRemovedKey"
|
|
|
+
|
|
|
private let kHeaderFooterInfoSaveKey = "kHeaderFooterInfoSaveKey"
|
|
|
+let kHeaderFooterManagerInit = "kHeaderFooterManagerInit"
|
|
|
|
|
|
class KMHeaderFooterManager: NSObject, NSCoding {
|
|
|
var headFooterObjects: [KMHeaderFooterObject] = []
|
|
@@ -23,15 +28,22 @@ class KMHeaderFooterManager: NSObject, NSCoding {
|
|
|
|
|
|
func reloadData() {
|
|
|
do {
|
|
|
- self.fetchPlistData()
|
|
|
-
|
|
|
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
|
|
|
+
|
|
|
+ let pHeadFooterObjects = self.fetchPlistData()
|
|
|
+ self.headFooterObjects = pHeadFooterObjects
|
|
|
+ if UserDefaults.standard.object(forKey: kHeaderFooterManagerInit) == nil {
|
|
|
+ if let man = NSKeyedUnarchiver.unarchiveObject(with: storedData) as? KMHeaderFooterManager {
|
|
|
+ UserDefaults.standard.set("1", forKey: kHeaderFooterManagerInit)
|
|
|
+ for object in man.headFooterObjects {
|
|
|
+ object.isMigrate = true
|
|
|
+ self.headFooterObjects.append(object)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
self.savePlistData()
|
|
|
- print(man)
|
|
|
}
|
|
|
}
|
|
|
} catch {
|
|
@@ -105,18 +117,21 @@ class KMHeaderFooterManager: NSObject, NSCoding {
|
|
|
}
|
|
|
|
|
|
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)")
|
|
|
- }
|
|
|
+// 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)")
|
|
|
+// }
|
|
|
+ self.savePlistData()
|
|
|
}
|
|
|
|
|
|
func clearStored() {
|
|
|
UserDefaults.standard.removeObject(forKey: kHeaderFooterInfoSaveKey)
|
|
|
UserDefaults.standard.synchronize()
|
|
|
+
|
|
|
+ try?FileManager.default.removeItem(atPath: kHeaderFooterPlistPath)
|
|
|
}
|
|
|
|
|
|
func fetchHeaderFooterAvailableName() -> String {
|
|
@@ -148,41 +163,34 @@ class KMHeaderFooterManager: NSObject, NSCoding {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-let kHeaderFooterFolderPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.applicationSupportDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last?.stringByAppendingPathComponent(Bundle.main.bundleIdentifier!).stringByAppendingPathComponent("headerFooter")
|
|
|
-let kHeaderFooterPlistPath = kHeaderFooterFolderPath?.stringByAppendingPathComponent("headerFooter.plist")
|
|
|
-let kHeaderFooterRemovedKey = "kHeaderFooterRemovedKey"
|
|
|
-
|
|
|
extension KMHeaderFooterManager {
|
|
|
- func fetchPlistData() {
|
|
|
+ func fetchPlistData() -> [KMHeaderFooterObject] {
|
|
|
if (!FileManager.default.fileExists(atPath: kHeaderFooterFolderPath!)) {
|
|
|
try?FileManager.default.createDirectory(atPath: kHeaderFooterFolderPath!, withIntermediateDirectories: false)
|
|
|
}
|
|
|
|
|
|
- if (!FileManager.default.fileExists(atPath: kHeaderFooterPlistPath!)) {
|
|
|
- FileManager.default.createFile(atPath: kHeaderFooterPlistPath!, contents: nil)
|
|
|
+ if (!FileManager.default.fileExists(atPath: kHeaderFooterPlistPath)) {
|
|
|
+ FileManager.default.createFile(atPath: kHeaderFooterPlistPath, contents: nil)
|
|
|
}
|
|
|
- print("页眉页脚文件地址 =" + kHeaderFooterPlistPath!)
|
|
|
+ print("页眉页脚文件地址 =" + kHeaderFooterPlistPath)
|
|
|
|
|
|
- let plistData = try NSData(contentsOfFile: kHeaderFooterPlistPath!)
|
|
|
+ let plistData = try NSData(contentsOfFile: kHeaderFooterPlistPath)
|
|
|
// 解档 plist 数据
|
|
|
- if let headerFooterObject = try NSKeyedUnarchiver.unarchiveObject(with: plistData as! Data) as? KMHeaderFooterObject {
|
|
|
+ if let headerFooterObjects = try NSKeyedUnarchiver.unarchiveObject(with: plistData as! Data) as? [KMHeaderFooterObject] {
|
|
|
// 如果解档成功,可以使用 headerFooterObject
|
|
|
- print("Header footer object: \(headerFooterObject)")
|
|
|
+ print("Header footer object: \(headerFooterObjects)")
|
|
|
+ return headerFooterObjects
|
|
|
} else {
|
|
|
print("Failed to unarchive header footer object")
|
|
|
+ return []
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- let dictionary = NSDictionary(contentsOfFile: kHeaderFooterPlistPath!)
|
|
|
- return
|
|
|
}
|
|
|
|
|
|
func savePlistData() {
|
|
|
// 获取 KMHeaderFooterObject 对象的归档数据
|
|
|
if let archivedData = try? NSKeyedArchiver.archivedData(withRootObject: headFooterObjects, requiringSecureCoding: false) {
|
|
|
// 将数据写入 plist 文件
|
|
|
- let plistURL = URL(fileURLWithPath: kHeaderFooterPlistPath!)
|
|
|
+ let plistURL = URL(fileURLWithPath: kHeaderFooterPlistPath)
|
|
|
do {
|
|
|
try archivedData.write(to: plistURL)
|
|
|
print("Header footer object saved to plist file")
|