Swift中使用Reactive获取网络数据,并字典转模型。

本文介绍了使用Swift语言实现微博信息模型及列表加载的过程。包括Status模型定义,属性如创建时间、ID、文本内容和来源等,以及如何通过字典转换为模型对象。此外,还展示了StatusListViewModel类如何加载微博数据并将其转换为Status模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模型:

//
//  Status.swift
//  ceshi
//
//  Created by 胡双飞 on 15/10/11.
//  Copyright © 2015年 HSF. All rights reserved.
//

import UIKit
/// 微博模型
class Status: NSObject {

 
    //MARK:- 属性列表
    
    /// 微博创建时间
    var created_at: String?
 
    /// 微博ID
    var id: Int = 0
 
    /// 微博信息内容
    var text:String?

    /// 微博来源
    var source:String?
    
    //MARK:-字典转模型
    
    init(dic: [String: AnyObject]) {
        super.init()
        setValuesForKeysWithDictionary(dic)
    }
    
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {}
    
    //对象的描述信息
    override var description: String{
        
        let keys = ["created_at","id","text","source"]
        
        return dictionaryWithValuesForKeys(keys).description
    }
    
}




//
//  StatusListViewModel.swift
//  WeiBo
//
//  Created by 胡双飞 on 15/10/11.
//  Copyright © 2015年 HSF. All rights reserved.
//

import UIKit
import ReactiveCocoa

/// 微博列表模型 - 分离网络加载
class StatusListViewModel: NSObject {

    //微博数据数组
    var status:[AnyObject]?

    /// 加载微博数据
    func loadStatus()-> RACSignal{
        
        return RACSignal.createSignal({ (subscribe) -> RACDisposable! in
            
            NetworkTools.sharedTools.loadStatus().subscribeNext({ (result) -> Void in

                //1.获取网络数据,加载到字典数组中
                guard let array = result["statuses"] as? [[String: AnyObject]] else{
                    return
                }
                
                //2.字典转模型
                if self.status == nil{
                    //初始化Status模型的字典
                    self.status = [Status]()
                }
                
                //3.遍历模型
                for dic in array{
                    self.status?.append(Status(dic: dic))
                }

                subscribe.sendCompleted()

                }, error: { (error) -> Void in
                    
                    subscribe.sendError(error)
                    
                }) {}
            return nil
        })
        
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值