CLDeviceDataPlist.swift 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. //
  2. // CLDeviceDataPlist.swift
  3. // SaveDeviceData
  4. //
  5. // Created by weclouds on 2019/6/3.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. //蓝牙数据
  10. /*
  11. 打开,没有设备 -->添加设备 --> 点击蓝牙名称 --> 首页显示
  12. 打开 ,有设备 -->左滑重新连接 --> 蓝牙搜索 --> 设备不在当前位置
  13. --> 设备在当前位置 --> 连接成功 --> 跳转
  14. */
  15. // key 用 类型 + 型号
  16. class CLDeviceDataPlist: NSObject {
  17. // static let share :CLDeviceDataPlist = {
  18. // let tool = CLDeviceDataPlist()
  19. // return tool
  20. // }()
  21. // var filePath = "" // 文件路径
  22. //判断文件是否存在改plist ,不存在创建
  23. open func createPlistFile(_ fileName:String) {
  24. //获取路径
  25. let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
  26. let filePath = path + "/" + fileName
  27. //###注意加横杠“/”,否则真机测试崩溃,无法写入####
  28. if FileManager.default.fileExists(atPath: filePath) == false {
  29. let rootDict = NSMutableDictionary()
  30. rootDict.write(toFile: filePath, atomically: true)
  31. print("plist创建成功")
  32. }else{
  33. print("文件已存在")
  34. }
  35. }
  36. private func getFilePath(_ fileName:String) -> String {
  37. //获取路径
  38. let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
  39. let filePath1 = path + "/" + fileName
  40. return filePath1
  41. }
  42. //遍历数据
  43. private func findPlistFileData(_ key :String,fileName:String) -> Bool {
  44. let filePath = getFilePath(fileName)
  45. if let dictData = NSMutableDictionary(contentsOfFile: filePath) {
  46. for (k,_) in dictData{
  47. //判断是否存在相同蓝牙名称
  48. if key == (k as! String){
  49. return true
  50. }
  51. }
  52. }
  53. return false
  54. }
  55. //保存数据
  56. private func savePlistData(_ fileName: String, key:String, deviceData:[String:Any]) {
  57. let filePath = getFilePath(fileName)
  58. let rootDict = NSMutableDictionary(contentsOfFile: filePath) // 根
  59. rootDict?.setObject(deviceData, forKey: key as NSCopying)
  60. rootDict?.write(toFile: filePath, atomically: true)
  61. print("保存成功 -- \(filePath)")
  62. self.readAllPlistData(fileName)
  63. }
  64. //保存
  65. func saveData111 (_ fileName :String,key:String, deviceData:[String:Any]) {
  66. //设备已存在
  67. self.savePlistData(fileName, key: key, deviceData: deviceData)
  68. }
  69. func updatePlist(At fileName :String,key:String, deviceName:String) {
  70. //获取所有数据
  71. let filePath = getFilePath(fileName)
  72. if let dicData = NSMutableDictionary(contentsOfFile: filePath) {
  73. let dict1 = dicData[key] as! NSMutableDictionary
  74. dict1.setObject(deviceName, forKey: "DeviceName" as NSCopying)
  75. self.savePlistData(fileName, key: key, deviceData: dict1 as! [String : Any])
  76. // log.debug("更新呢字典中的 -- device --- 、\(dicData)")
  77. }
  78. }
  79. func saveData (_ fileName :String,key:String, deviceData:[String:Any]) -> Bool {
  80. if findPlistFileData(key, fileName: fileName) == true {
  81. //设备已存在
  82. self.savePlistData(fileName, key: key, deviceData: deviceData)
  83. print("该设备已存在")
  84. return true
  85. }
  86. return false
  87. }
  88. //保存
  89. func updateData (_ fileName :String, key:String, deviceData:[String:Any]) -> Bool {
  90. if findPlistFileData(key, fileName: fileName) == true {
  91. //设备已存在
  92. self.savePlistData(fileName, key: key, deviceData: deviceData)
  93. print("该设备已存在")
  94. return true
  95. }
  96. return false
  97. }
  98. private func deletePlistData(_ fileName:String,key:String) {
  99. let filePath = getFilePath(fileName)
  100. let rootDict = NSMutableDictionary(contentsOfFile: filePath) //根
  101. rootDict?.removeObject(forKey: key as Any) // 二级
  102. rootDict?.write(toFile: filePath, atomically: true)
  103. print("删除成功")
  104. }
  105. //删除所有数据
  106. func removeAllData(_ fileName:String) {
  107. let filePath = getFilePath(fileName)
  108. let rootDict = NSMutableDictionary(contentsOfFile: filePath) //根
  109. if (rootDict?.allKeys.count)! > 0 {
  110. for key in rootDict!.allKeys {
  111. rootDict?.removeObject(forKey: key as Any) // 二级
  112. rootDict?.write(toFile: filePath, atomically: true)
  113. print("删除成功")
  114. }
  115. }else{
  116. print("列表里边没有设备")
  117. }
  118. log.debug("查看剩余数据---\(readAllPlistData(fileName))")
  119. }
  120. func deleteData(_ fileName:String, key:String) {
  121. guard findPlistFileData(key, fileName: fileName) == true else {
  122. print("该设备不存在")
  123. return
  124. }
  125. self.deletePlistData(fileName, key: key)
  126. }
  127. //查找
  128. func findData(_ fileName:String,key:String) -> NSDictionary?{
  129. guard findPlistFileData(key, fileName: fileName) == true else {
  130. print("该学号不存在")
  131. return nil
  132. }
  133. let filePath = getFilePath(fileName)
  134. if let dicData = NSMutableDictionary(contentsOfFile: filePath) {
  135. for (k,v) in dicData {
  136. if key == (k as! String) {
  137. let dic2 = v as! NSDictionary
  138. print("该设备存在")
  139. for (k1, v2) in dic2 {
  140. print("\(k1): \(v2)")
  141. }
  142. return dic2
  143. }
  144. }
  145. }
  146. return nil
  147. }
  148. ///读取所有数据
  149. func readAllPlistData(_ fileName:String) ->NSDictionary {
  150. let filePath = getFilePath(fileName)
  151. if let dicData = NSMutableDictionary(contentsOfFile: filePath) {
  152. print(dicData)
  153. return dicData
  154. }
  155. return NSDictionary()
  156. }
  157. ///获取蓝牙名称
  158. func readPeripheral (from fileName:String,key:String) ->String {
  159. let filePath = getFilePath(fileName)
  160. if let dicData = NSMutableDictionary(contentsOfFile: filePath) {
  161. print(dicData)
  162. for (k,v) in dicData {
  163. if key == (k as! String) {
  164. let dic2 = v as! NSDictionary
  165. print("该设备存在")
  166. for (k1, v2) in dic2 {
  167. let k11 = k1 as! String
  168. if k11 == "PerpheralName"{
  169. let perpheralName = dic2["PerpheralName"] as! String
  170. return perpheralName as String
  171. }
  172. print("\(k1): \(v2)")
  173. }
  174. }
  175. }
  176. }
  177. return ""
  178. }
  179. }