swift微博第16天(KVC字典转模型)

简介: swift微博第16天(KVC字典转模型)

下面以 HomeViewModel  为例,我所求的数据类型为: 数组套字典

import UIKit
class HomeViewModel: NSObject {
 // 微博创建的时间
 var created_at: String?
 // 微博ID
 var id: Int = 0
 // 微博信息内容
 var text: String?
 // 微博来源
 var source: String?
 // 微博配图数组
 var pic_urls: [[String: AnyObject]]?
class func loadStause(finshed: @escaping (_ models:[HomeViewModel]?,_ error:Error?)->()){
    let account = UserAccount.loadAccount()
    // 1.定义路径
    let path = "2/statuses/home_timeline.json"
    // 2.封装参数
    let params = ["access_token":account?.access_token]
    NetworkTools.shareNetworkTools().get(path, parameters: params, progress: nil, success: { (_, JSON) in
        print(JSON!)
        /*
           1.取出Stause key对应的数组(存储的都是字典)
           2.遍历数组将字典转化为模型
         */
        let dict  = JSON as! NSDictionary
        print("statuses=\(dict["statuses"]!)")
        if let statuses = dict["statuses"] as? [[String: AnyObject]] {
            let models = HomeViewModel.dict2model(array: statuses)
            finshed(models, nil)
        }
    }) { (_, error) in
        finshed(nil, error)
    }
}
// MARK: 字典转模型的方法
private class func dict2model(array:[[String: AnyObject]]) -> [HomeViewModel] {
    var models1 = [HomeViewModel]()
    for dict1 in array {
        models1.append(HomeViewModel(dict: dict1))
    }
    return models1
}
// 字典转模型
init(dict: [String: AnyObject]){
    super.init()
    // 会调用 setValue forKey 给每一个属性赋值
    setValuesForKeys(dict)
}
// 这句话的意思是字典转模型的时候 要一一对应的,为了防止没有的字段崩溃,那么就跳过(没有的字段会走这里的,不用做什么操作就好了)
//    override func setValue(_ value: Any?, forKey key: String) {
//
//        print("找不到\(key)")
//    }
override func setValue(_ value: Any?, forUndefinedKey key: String) {
    print(key)
}
// 打印当前的模型
 static let properties = ["created_at","id","text","source","pic_urls"]
 override var description: String{
    let dict = self.dictionaryWithValues(forKeys: HomeViewModel.properties)
    return "\(dict)"
  }
 }

模型的调用 一个简单的闭包

HomeViewModel.loadStause { (models, error) in
        if error != nil
        {
           return
        }
        self.homeViewModels = models
        print(self.homeViewModels!.count)
    }


目录
相关文章
|
26天前
|
人工智能 物联网 API
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
|
9月前
|
机器学习/深度学习 人工智能 物联网
大模型时代,还缺一只雨燕 | SWIFT:魔搭社区轻量级微调推理框架
伴随着大数据的发展和强大的分布式并行计算能力,以预训练+微调的模型开发范式渐渐成为深度学习领域的主流。 2023年各家推出的大模型浩如烟海,如GPT4、Llama、ChatGLM、Baichuan、RWKV、Stable-Diffusion等。这些模型在达到越来越好的效果的同时也需要越来越多的算力资源:全量finetune它们动辄需要几十至上百G显存训练部署,一般的实验室和个人开发者无力承担。
|
JSON HandyJSON 开发工具
swift网络请求 数据解析 图片显示 模型转换
Alamofire :swift版本的网络请求sdk,是AFNetworking研发团队研发的swift版网络请求工具类 SwiftyJSON:当然就是用来解析json数据的咯 Kingfisher: 是用来显示网络图片的与oc中的SDWebImage类似 HandyJSON: 可将json转模型
231 0
swift网络请求 数据解析 图片显示 模型转换
|
SQL 存储 Oracle
swift微博第25天(SQLite)
swift微博第25天(SQLite)
202 0
swift微博第25天(SQLite)
|
Swift
swift微博第21天(图片选择器)
swift微博第21天(图片选择器)
437 0
swift微博第21天(图片选择器)
|
Swift
swift微博第15天(新版的判断以及跟控制器的切换)
swift微博第15天(新版的判断以及跟控制器的切换)
152 0
swift微博第15天(新版的判断以及跟控制器的切换)
|
Swift
swift微博第14天(新特性的引导图)
swift微博第14天(新特性的引导图)
159 0
swift微博第14天(新特性的引导图)
|
安全 Swift 数据安全/隐私保护
swift微博第12天(OAuth授权)
swift微博第12天(OAuth授权)
149 0
swift微博第12天(OAuth授权)
|
程序员 API Swift
swift微博第11天(三方框架的导入和手动导入的桥接以及swift单粒)
swift微博第11天(三方框架的导入和手动导入的桥接以及swift单粒)
156 0
swift微博第11天(三方框架的导入和手动导入的桥接以及swift单粒)
|
Swift
swift微博第9天(自定义微博首页的菜单)
swift微博第9天(自定义微博首页的菜单)
159 0
swift微博第9天(自定义微博首页的菜单)