// // CLDeviceDataPlist.swift // SaveDeviceData // // Created by weclouds on 2019/6/3. // Copyright © 2019 weclouds. All rights reserved. // import UIKit //蓝牙数据 /* 打开,没有设备 -->添加设备 --> 点击蓝牙名称 --> 首页显示 打开 ,有设备 -->左滑重新连接 --> 蓝牙搜索 --> 设备不在当前位置 --> 设备在当前位置 --> 连接成功 --> 跳转 */ // key 用 类型 + 型号 class CLDeviceDataPlist: NSObject { // static let share :CLDeviceDataPlist = { // let tool = CLDeviceDataPlist() // return tool // }() // var filePath = "" // 文件路径 //判断文件是否存在改plist ,不存在创建 open func createPlistFile(_ fileName:String) { //获取路径 let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] let filePath = path + "/" + fileName //###注意加横杠“/”,否则真机测试崩溃,无法写入#### if FileManager.default.fileExists(atPath: filePath) == false { let rootDict = NSMutableDictionary() rootDict.write(toFile: filePath, atomically: true) print("plist创建成功") }else{ print("文件已存在") } } private func getFilePath(_ fileName:String) -> String { //获取路径 let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] let filePath1 = path + "/" + fileName return filePath1 } //遍历数据 private func findPlistFileData(_ key :String,fileName:String) -> Bool { let filePath = getFilePath(fileName) if let dictData = NSMutableDictionary(contentsOfFile: filePath) { for (k,_) in dictData{ //判断是否存在相同蓝牙名称 if key == (k as! String){ return true } } } return false } //保存数据 private func savePlistData(_ fileName: String, key:String, deviceData:[String:Any]) { let filePath = getFilePath(fileName) let rootDict = NSMutableDictionary(contentsOfFile: filePath) // 根 rootDict?.setObject(deviceData, forKey: key as NSCopying) rootDict?.write(toFile: filePath, atomically: true) print("保存成功 -- \(filePath)") self.readAllPlistData(fileName) } //保存 func saveData111 (_ fileName :String,key:String, deviceData:[String:Any]) { //设备已存在 self.savePlistData(fileName, key: key, deviceData: deviceData) } func updatePlist(At fileName :String,key:String, deviceName:String) { //获取所有数据 let filePath = getFilePath(fileName) if let dicData = NSMutableDictionary(contentsOfFile: filePath) { let dict1 = dicData[key] as! NSMutableDictionary dict1.setObject(deviceName, forKey: "DeviceName" as NSCopying) self.savePlistData(fileName, key: key, deviceData: dict1 as! [String : Any]) // log.debug("更新呢字典中的 -- device --- 、\(dicData)") } } func saveData (_ fileName :String,key:String, deviceData:[String:Any]) -> Bool { if findPlistFileData(key, fileName: fileName) == true { //设备已存在 self.savePlistData(fileName, key: key, deviceData: deviceData) print("该设备已存在") return true } return false } //保存 func updateData (_ fileName :String, key:String, deviceData:[String:Any]) -> Bool { if findPlistFileData(key, fileName: fileName) == true { //设备已存在 self.savePlistData(fileName, key: key, deviceData: deviceData) print("该设备已存在") return true } return false } private func deletePlistData(_ fileName:String,key:String) { let filePath = getFilePath(fileName) let rootDict = NSMutableDictionary(contentsOfFile: filePath) //根 rootDict?.removeObject(forKey: key as Any) // 二级 rootDict?.write(toFile: filePath, atomically: true) print("删除成功") } //删除所有数据 func removeAllData(_ fileName:String) { let filePath = getFilePath(fileName) let rootDict = NSMutableDictionary(contentsOfFile: filePath) //根 if (rootDict?.allKeys.count)! > 0 { for key in rootDict!.allKeys { rootDict?.removeObject(forKey: key as Any) // 二级 rootDict?.write(toFile: filePath, atomically: true) print("删除成功") } }else{ print("列表里边没有设备") } log.debug("查看剩余数据---\(readAllPlistData(fileName))") } func deleteData(_ fileName:String, key:String) { guard findPlistFileData(key, fileName: fileName) == true else { print("该设备不存在") return } self.deletePlistData(fileName, key: key) } //查找 func findData(_ fileName:String,key:String) -> NSDictionary?{ guard findPlistFileData(key, fileName: fileName) == true else { print("该学号不存在") return nil } let filePath = getFilePath(fileName) if let dicData = NSMutableDictionary(contentsOfFile: filePath) { for (k,v) in dicData { if key == (k as! String) { let dic2 = v as! NSDictionary print("该设备存在") for (k1, v2) in dic2 { print("\(k1): \(v2)") } return dic2 } } } return nil } ///读取所有数据 func readAllPlistData(_ fileName:String) ->NSDictionary { let filePath = getFilePath(fileName) if let dicData = NSMutableDictionary(contentsOfFile: filePath) { print(dicData) return dicData } return NSDictionary() } ///获取蓝牙名称 func readPeripheral (from fileName:String,key:String) ->String { let filePath = getFilePath(fileName) if let dicData = NSMutableDictionary(contentsOfFile: filePath) { print(dicData) for (k,v) in dicData { if key == (k as! String) { let dic2 = v as! NSDictionary print("该设备存在") for (k1, v2) in dic2 { let k11 = k1 as! String if k11 == "PerpheralName"{ let perpheralName = dic2["PerpheralName"] as! String return perpheralName as String } print("\(k1): \(v2)") } } } } return "" } }