Swift - EVReflection (一)

EVReflection 是一个优秀的Swift开源框架,接入方便,使用简单。

EVReflection https://github.com/evermeer/EVReflection

以User为例,下面是一些常用的使用:

User.swift

import Foundation
import EVReflection

class User: EVObject {
    
    var id: Int = 0
    var name: String = ""
    var friends: [User] = []
    
    // 自定义 key 值
    override func propertyMapping() -> [(keyInObject: String?, keyInResource: String?)] {
        return [(keyInObject: "id",keyInResource: "UserID"),
                (keyInObject: "name",keyInResource: "UserName"),
                (keyInObject: "friends",keyInResource: "Friends")
        ]
    }
}

ViewController.swift

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        // 序列化的JSON字符串
        let jsonString:String = "{\"id\": 24, \"name\": \"Bob Jefferson\", \"friends\": [{\"id\": 29, \"name\": \"Jen Jackson\"}, {\"id\": 30, \"name\": \"Jen M\"}]}"
        
        // MARK:- JSON转模型
        
        let user = User(json:jsonString)
        print("user: \(user) \n")
        
        // MARK:- 对象转JSON
        
        let newJsonString = user.toJsonString()
        print("newJsonString: \(newJsonString) \n")

        // MARK:- 模型转字典

        let userDict = user.toDictionary()
        //let userDict = user.toDictionary(.DefaultSerialize)
        print("userDict: \(userDict) \n")
        
        // MARK:- 字典转模型

        let newUser = User(dictionary: userDict)
        print("newUser: \(newUser) \n")

        // MARK:- 保存
        
        user.saveToTemp("User.dat")
        //user.saveToDocuments("User.dat")
        
        // MARK:- 读文件转模型
        
        let savedUser = User(fileNameInTemp: "User.dat")
        print("savedUser: \(savedUser) \n")
    }
}

打印结果如下:

user: User = {
  "UserName" : "Bob Jefferson",
  "UserID" : 24,
  "Friends" : [
    {
      "UserName" : "Jen Jackson",
      "UserID" : 29,
      "Friends" : [

      ]
    },
    {
      "UserName" : "Jen M",
      "UserID" : 30,
      "Friends" : [

      ]
    }
  ]
} 

newJsonString: {"UserName":"Bob Jefferson","UserID":24,"Friends":[{"UserName":"Jen Jackson","UserID":29,"Friends":[]},{"UserName":"Jen M","UserID":30,"Friends":[]}]} 

userDict: {
    Friends =     (
                {
            Friends =             (
            );
            UserID = 29;
            UserName = "Jen Jackson";
        },
                {
            Friends =             (
            );
            UserID = 30;
            UserName = "Jen M";
        }
    );
    UserID = 24;
    UserName = "Bob Jefferson";
} 

newUser: User = {
  "UserName" : "Bob Jefferson",
  "UserID" : 24,
  "Friends" : [
    {
      "UserName" : "Jen Jackson",
      "UserID" : 29,
      "Friends" : [

      ]
    },
    {
      "UserName" : "Jen M",
      "UserID" : 30,
      "Friends" : [

      ]
    }
  ]
} 

savedUser: User = {
  "UserName" : "Bob Jefferson",
  "UserID" : 24,
  "Friends" : [
    {
      "UserName" : "Jen Jackson",
      "UserID" : 29,
      "Friends" : [

      ]
    },
    {
      "UserName" : "Jen M",
      "UserID" : 30,
      "Friends" : [

      ]
    }
  ]
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Morris_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值