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
})
}
}
//
// 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
//
// 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
})
}
}
相关文章推荐
- Tomcat7出现HTTP Status 500 - java.lang.ClassCastException: org.apache.jasper.el.ELContextImpl cannot b
- CentsOS7 网络自动启动
- 网络连接部分
- Rhel7聚合链路
- 适配iOS9https请求
- NFS实例 rhel 7
- UVAlive 7037 - The Problem Needs 3D Arrays(网络流‘最大密度子图)
- 冒泡排序和直接选择排序的区别(转自网络)
- hadoop网络配置十分重要
- 海量数据挖掘MMDS week3:社交网络之社区检测:高级技巧
- 海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧
- 海量数据挖掘MMDS week3:社交网络之社区检测:基本技巧
- 第二章 简单的TCP通讯示例
- 【转】HttpServlet详解
- 业界良心机构解密:90后更适合学网络营销的六大理由!
- TCP本机客户端连接本机服务器!
- Java网络编程注意事项1
- Rhel7 重置root密码为ooxxbalabala
- Rhel7 配置lvm
- python实现简易网络爬虫