您的位置:首页 > 理论基础 > 计算机网络

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

2015-10-11 21:59 381 查看
模型:

//

// 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

})

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: