iOS 字典转模型纯swift框架HandyJSON使用实例:本地存取
HandyJSON - github
文章目录
- 1.模型类
- 2.本地存取类
- 3.存
- 4.取
- 5.另一个简单模型类实例
1.模型类
import HandyJSONclass RouteModelJSON: HandyJSON {class PointModelJSON: HandyJSON {required init(){}var x: Double = 0var y: Double = 0init(point: BMKMapPoint) {x = point.xy = point.y}var mapPoint: BMKMapPoint {BMKMapPoint(x: x, y: y)}}required init(){}var name: String = ""var typeID: String = ""var distance: String = ""private var points: [PointModelJSON] = []var mapPoints: [BMKMapPoint] {set {for item in newValue {self.points.append(PointModelJSON(point: item))}}get {var mapPoints = [BMKMapPoint]()for item in points {mapPoints.append(item.mapPoint)}return mapPoints}}init(name: String, points: [BMKMapPoint], typeID: String) {self.name = nameself.distance = self.distanceStrFromMapPoints(points: points)self.typeID = typeIDself.mapPoints = points}// func mapping(mapper: HelpingMapper) {// mapper <<<
// self.typeID <-- "id"
// }
}extension RouteModelJSON {func distanceStrFromMapPoints(points:[BMKMapPoint]) -> String {guard points.count != 0 else {return ""}var totalDistancesRoute: Double = 0for i in 1..<points.count {let distance = BMKMetersBetweenMapPoints(points[i-1],points[i])totalDistancesRoute += distance}var distanceStr = ""if totalDistancesRoute < 1000 {distanceStr = "\(Int(totalDistancesRoute.roundTo(places: 1)))m"}else {let totalDistancesKm:Double = totalDistancesRoute/1000distanceStr = "\(totalDistancesKm.roundTo(places: 1))km"}return distanceStr}
}
2.本地存取类
class MyFileJSONManager {static let shared = MyFileJSONManager()private var routesPath: String {var pathFile = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).first!pathFile += "/routes.plist"return pathFile}private var JSONStrArr: [String] {if let arr = NSArray.init(contentsOfFile: routesPath) {return NSArray.init(contentsOfFile: routesPath) as! [String]}return []}var routeModelArr: [RouteModelJSON] {var routeModelArr = [RouteModelJSON]()for i in 0..<JSONStrArr.count {let routeModel: RouteModelJSON = RouteModelJSON.deserialize(from: JSONStrArr[i])!routeModelArr.append(routeModel)}return routeModelArr}func saveRouteModel(routeModel: RouteModelJSON) {let str = routeModel.toJSONString()let routesArr = NSMutableArray(array: JSONStrArr)routesArr.insert(str, at: 0)routesArr.write(toFile: routesPath, atomically: true)}let userDefault = UserDefaults.standardvar userDefaultIndex: Int {set {userDefault.setValue(newValue, forKey: "index")userDefault.synchronize()}get {let index: Int = userDefault.object(forKey: "index") as! Intreturn index}}}
3.存
let name: String = startStr! + NSLocalizedString("to", comment: "") + destinationStr!let routeModel = RouteModelJSON(name: name, points: points, typeID: "未上传")MyFileJSONManager.shared.saveRouteModel(routeModel: routeModel)startEndRoutePaint(points)
4.取
func loadData() {routeModelArr = MyFileJSONManager.shared.routeModelArr}
@IBAction func rightBarBtnItemClick(_ sender: Any) {if let routeModel = routeModel {self.selectRouteClosure!(routeModel)}self.dismiss(animated: true, completion: nil)}
vc.selectRouteClosure = { routeModel inlet points = routeModel.mapPointsself.startCoordinate = BMKCoordinateForMapPoint(points.first!)self.destinationCoordinate = BMKCoordinateForMapPoint(points.last!)self.startEndRoutePaint(points)}self.present(vc, animated: true, completion: nil)
5.另一个简单模型类实例
import UIKitimport HandyJSONclass EquipmentModel: HandyJSON {required init() {}var name: String = ""private var uuidStr: String = ""var uuid: UUID {set {uuidStr = newValue.uuidString}get {UUID(uuidString: uuidStr)!}}init(name: String, uuid: UUID) {self.name = nameself.uuid = uuid}}
iOS 字典转模型纯swift框架HandyJSON使用实例:本地存取相关推荐
- iOS (swift,oc)字典转模型(一)框架 YYModel HandyJSON
返回上级目录:IOS常用的第三方库(框架) 文章目录 1.纯swift框架 1.1-HandyJSON:`star:3.6k`据说是阿里巴巴的开源项目,第一眼我就相中了,打算用这个 1.1.1 jso ...
- iOS swift Alamofire+HandyJSON网络框架封装
iOS swift Alamofire+HandyJSON网络框架封装 我们在学习Objective_C时使用的网络框架是AFNetworking+MJExtension,而在swift中Alamof ...
- swift之字典转模型kvc、mjextention桥接、反射、HandyJSON、ObjectMapper、Codable
参考swift4.0字典转模型:https://www.cnblogs.com/shaoting/p/8087153.html =====================kvc字典转模型======= ...
- IOS之YYModel字典转模型第三方框架的使用
IOS之YYModel字典转模型第三方框架的使用 字典转模型,可以使用原生的KVC方式,也可使用第三方框架,常见的有YYModel,MJExtension,JSONModel,FastEasyMapp ...
- iOS swift5 字典转模型(二)
iOS (swift,oc)字典转模型(一)框架 YYModel HandyJSON Swift之Codable实战技巧 - 知乎
- iOS(一):Swift纯代码模式iOS开发入门教程
Swift纯代码模式iOS开发入门教程 项目初始化(修改为纯代码项目) 安装第三方库(以`SnapKit`库为例) 桥接OC库(QMUIKit) 封装视图并进行导航跳转 示例:使用 `TangramK ...
- 简单易用且功能丰富的纯Swift下载框架
Tiercel Tiercel是一个非常简单易用且功能丰富的纯Swift下载框架.最大的特点就是拥有强大的任务管理功能和可以直接获取常见的下载信息,并且只要加上一些简单的UI,就可以实现一个下载 ...
- 跟着MJExtension实现简单的字典转模型框架 - 简书
2019独角兽企业重金招聘Python工程师标准>>> 演示代码地址:https://github.com/codeWillwillCode/LearnMJExtension 最简单 ...
- IOS应用管理学习,进阶,涉及字典转模型,工厂方法,面向对象思想,页面布局等
IOS应用管理学习,进阶,涉及字典转模型,工厂方法,面向对象思想,页面布局等 前言:人为规定的参数 每一个 小view视图 宽度 80 高度 90 数据类型 CGFloat 定义, 3 列,数据类型 ...
最新文章
- typora 公式_Typora --- 一款功能强大的高效排版编译器
- Groovy里的绕过getter方法直接访问类属性的办法
- qt中sendevent_Qt中postEvent和sendEvent函数
- vim高级技巧(split)_小花_新浪博客
- linux rz sz 安装_Windows与Linux文件传输之lrzsz工具
- layui 之button 事件绑定的一种方法
- Ubuntu各版本下载安装知网论文阅读神器CAJViewer,并添加快捷图标启动方式
- java调用海康人脸识别比对demo(附demo源码下载)
- iOS设置启动页并适配机型
- XCOM2中敌对生物设计分析(Aliens篇)
- 5月语言排行榜:R 跌出前二十,Python 紧咬 C++
- quill上传本地视频(保姆级教学)
- 厉害了!北大3位硕博生搞出ChatGPT版Excel!动动嘴就能自动处理表格……免费用!...
- c语言打字游戏,用C语言实现的打字游戏
- 计算机无法u盘启动,uefi模式下U盘启动不了解决方法
- OpenCV 学习(四)之 将图片插入另一张图片中的实现(ROI)
- 树莓派4b搭建danted socks5 代理服务器 利用闲置宽带扩展搬砖IP
- 中标麒麟 NeoKylin 5.1 安装C++环境
- Essentially No Barriers in Neural Network Energy Landscape
- c++7-1 交换最小值和最大值