数据模型使用(ios),浅谈ios和swift数据模型使用,set和get方法使用
2017-03-09 15:04
856 查看
浅谈ios中oc和swift数据模型的使用
开发工具:xcode7.3
简单理解oc和swift数据模型的使用。
源码:swiftDemo
ocDemo
使用swift给模型赋值:
赋值方法三种:
一,属性逐一赋值
二,在构造函数中赋值
三,重写setValuesForKeysWithDictionary赋值
对于构造函数(或是重写setValuesForKeysWithDictionary方法)赋值,操作如下:
声明一个静态字符串数组,由属性所对应的键(key)构成
使用for循环遍历静态字符串数组,
在for循环遍历里,使用key取出dictionary的value,并赋值给Model
setValue(value: AnyObject?, forKey: String)
for循环可以写在构造函数中,
也可以使用重写setValuesForKeysWithDictionary的方法实现
代码:
class Model: NSObject {
var name = ""
var job = ""
var image = ""
static let properties = ["name","job","image"]
override init() {
super.init()
}
init(dict : [String : AnyObject?]) {
super.init()
for key in Model.properties {
if dict[key] != nil {
setValue(dict[key]!, forKey: key)
}
}
}
override func setValuesForKeysWithDictionary(keyedValues: [String : AnyObject]) {
for key in Model.properties {
if keyedValues[key] != nil {
setValue(keyedValues[key]!, forKey: key)
}
}
}
}
调用:
swift中的set和get方法
声明:
使用swift用模型给view赋值
以TableViewCell为例,
在cell中使用model赋值两种方法:
一,直接声明实现一个函数传入Model即可,例如
func cellForModel(model : Model) -> () {
在该函数实现中赋值,在cell实例化后,使用cell的对象调用这个函数,
cell.cellForModel(modelArray![indexPath.row])
二,使用set和get方法赋值,
首先声明两个Model类型的变量,便于代码阅读,这两个变量名称最好相似,一下划线区分它俩的不同
在其中一个变量后面实现set和get方法,在set方法中赋值,
在cell实例化后,使用cell的对象调用声明的属性赋值即可,例如
cell.model = modelArray![indexPath.row]
代码示例:
调用代码示例:
Ios中使用OC时,
模型赋值
oc数据模型
赋值方法常用的两种,
一
在.h文件的接口中声明属性(.m中接口声明的属性类外部不可以访问),使用时对属性逐一赋值
二
在.h文件的接口中声明属性(.m中接口声明的属性类外部不可以访问),使用构造函数赋值,需要注意,构造函数声明需写在.h的接口中,这样类外部可以调用该函数
构造函数有两种,类函数和类函数,它们区别在于调用时,类函数使用类名直接调用,函数需要构造类对象,才能调用
在构造函数中,使用setValuesForKeysWithDictionary赋值
实例代码:
在Model.h中
#import <Foundation/Foundation.h>
@interface Model : NSObject
@property ( nonatomic , copy ) NSString * name;
@property ( nonatomic , copy ) NSString * job;
@property ( nonatomic , copy ) NSString * image;
- (instancetype)initWithDict : (NSDictionary *) dict ;
+ (instancetype)model : (NSDictionary *) dict ;
@end
在Model.m中
调用代码实例:
使用模型对象给View赋值
以TableViewCell为例
数据模型给cell赋值:
常用方法两种:
一
使用set方法赋值,在.h文件中声明一个类型为Model的变量,在.m文件夹重写set方法,在set方法内部赋值
二
声明传参变量为Model的函数,调用赋值,直接传入Model的参数,在函数实现内部赋值
示例代码:
在TableViewCell.h中
在TableViewCell.m中
调用代码示例:
开发工具:xcode7.3
简单理解oc和swift数据模型的使用。
源码:swiftDemo
ocDemo
使用swift给模型赋值:
赋值方法三种:
一,属性逐一赋值
二,在构造函数中赋值
三,重写setValuesForKeysWithDictionary赋值
对于构造函数(或是重写setValuesForKeysWithDictionary方法)赋值,操作如下:
声明一个静态字符串数组,由属性所对应的键(key)构成
使用for循环遍历静态字符串数组,
在for循环遍历里,使用key取出dictionary的value,并赋值给Model
setValue(value: AnyObject?, forKey: String)
for循环可以写在构造函数中,
也可以使用重写setValuesForKeysWithDictionary的方法实现
代码:
class Model: NSObject {
var name = ""
var job = ""
var image = ""
static let properties = ["name","job","image"]
override init() {
super.init()
}
init(dict : [String : AnyObject?]) {
super.init()
for key in Model.properties {
if dict[key] != nil {
setValue(dict[key]!, forKey: key)
}
}
}
override func setValuesForKeysWithDictionary(keyedValues: [String : AnyObject]) {
for key in Model.properties {
if keyedValues[key] != nil {
setValue(keyedValues[key]!, forKey: key)
}
}
}
}
调用:
/*一 模型对象,属性逐一赋值 */ let model = Model.init(); model.name = "Lily" model.job = "teacher" model.image = "icon" /* 二 使用构造函数赋值 */ let m = Model.init(dict: ["name":"lily","job":"Student","image":"icon"]) /* 三 重写setValuesForKeysWithDictionary赋值 */ let model = Model.init(); model.setValuesForKeysWithDictionary(["name":"lily","job":"Student","image":"icon"])
swift中的set和get方法
声明:
var _model : Model? var model : Model?{ get{ return _model } set{ icon.image = UIImage(named: newValue!.image) name.text = newValue!.name job.text = newValue!.job _model = newValue } }使用:
cell.model = modelArray![indexPath.row]
使用swift用模型给view赋值
以TableViewCell为例,
在cell中使用model赋值两种方法:
一,直接声明实现一个函数传入Model即可,例如
func cellForModel(model : Model) -> () {
在该函数实现中赋值,在cell实例化后,使用cell的对象调用这个函数,
cell.cellForModel(modelArray![indexPath.row])
二,使用set和get方法赋值,
首先声明两个Model类型的变量,便于代码阅读,这两个变量名称最好相似,一下划线区分它俩的不同
在其中一个变量后面实现set和get方法,在set方法中赋值,
在cell实例化后,使用cell的对象调用声明的属性赋值即可,例如
cell.model = modelArray![indexPath.row]
代码示例:
class TableViewCell: UITableViewCell { @IBOutlet weak var icon: UIImageView! @IBOutlet weak var name: UILabel! @IBOutlet weak var job: UILabel! var _model : Model? var model : Model?{ get{ return _model } set{ icon.image = UIImage(named: newValue!.image) name.text = newValue!.name job.text = newValue!.job _model = newValue } } func cellForModel(model : Model) -> () { icon.image = UIImage(named: model.image) name.text = model.name job.text = model.job } }
调用代码示例:
/* 一 使用函数赋值 */ cell.cellForModel(modelArray![indexPath.row]) /* 二 使用set方法赋值 */ cell.model = modelArray![indexPath.row]
Ios中使用OC时,
模型赋值
oc数据模型
赋值方法常用的两种,
一
在.h文件的接口中声明属性(.m中接口声明的属性类外部不可以访问),使用时对属性逐一赋值
二
在.h文件的接口中声明属性(.m中接口声明的属性类外部不可以访问),使用构造函数赋值,需要注意,构造函数声明需写在.h的接口中,这样类外部可以调用该函数
构造函数有两种,类函数和类函数,它们区别在于调用时,类函数使用类名直接调用,函数需要构造类对象,才能调用
在构造函数中,使用setValuesForKeysWithDictionary赋值
实例代码:
在Model.h中
#import <Foundation/Foundation.h>
@interface Model : NSObject
@property ( nonatomic , copy ) NSString * name;
@property ( nonatomic , copy ) NSString * job;
@property ( nonatomic , copy ) NSString * image;
- (instancetype)initWithDict : (NSDictionary *) dict ;
+ (instancetype)model : (NSDictionary *) dict ;
@end
在Model.m中
#import "Model.h" @implementation Model - (instancetype)initWithDict:(NSDictionary *)dict { if (self = [super init]) { [self setValuesForKeysWithDictionary:dict]; } return self; } + (instancetype)model:(NSDictionary *)dict { /* Model *m = [[super alloc]init]; if (m) { [m setValuesForKeysWithDictionary:dict]; } return m; */ return [[super alloc]initWithDict:dict]; } @end
调用代码实例:
/* 构造函数赋值 一 */ Model * model0 = [Model model:@{@"name":@"lily",@"job":@"Teacher",@"image":@"icon"}]; /* 构造函数赋值 二 */ Model * model = [[Model alloc]initWithDict:@{@"name":@"lily",@"job":@"Teacher",@"image":@"icon"}]; /* 调用setValuesForKeysWithDictionary */ Model * model = [[Model alloc]init]; [model setValuesForKeysWithDictionary:@{@"name":@"lily",@"job":@"Teacher",@"image":@"icon"}];
使用模型对象给View赋值
以TableViewCell为例
数据模型给cell赋值:
常用方法两种:
一
使用set方法赋值,在.h文件中声明一个类型为Model的变量,在.m文件夹重写set方法,在set方法内部赋值
二
声明传参变量为Model的函数,调用赋值,直接传入Model的参数,在函数实现内部赋值
示例代码:
在TableViewCell.h中
#import <UIKit/UIKit.h> @class Model ; @interface TableViewCell : UITableViewCell @property ( nonatomic , strong ) Model * model ; - (void) cellForModel : (Model *) model ; @end
在TableViewCell.m中
#import "TableViewCell.h" #import "Model.h" @interface TableViewCell () @property (weak, nonatomic) IBOutlet UIImageView *icon; @property (weak, nonatomic) IBOutlet UILabel *name; @property (weak, nonatomic) IBOutlet UILabel *job; @end @implementation TableViewCell - (void)setModel:(Model *)model { _model = model; _icon.image = [UIImage imageNamed:model.image]; _name.text = model.name; _job.text = model.job ; } - (void)cellForModel:(Model *)model { _icon.image = [UIImage imageNamed:model.image]; _name.text = model.name; _job.text = model.job ; } @end
调用代码示例:
/* set方法赋值 */ cell.model = _modelArray[indexPath.row] ; /* 调用函数赋值 */ [cell cellForModel:_modelArray[indexPath.row]];
相关文章推荐
- 【Day35】浅谈PHP拦截器之__set()与__get()的理解与使用方法
- IOS中网络数据请求过程详解(GET POST方法使用)
- iOS开发中大部分App的网络数据交换是基于HTTP协议的。本文将简单介绍在Swift中使用HTTP进行网络请求的几种方法。
- iOS - 重写set和get方法后,为什么使用时会发生无效?解析命名规范
- 浅谈PHP拦截器之__set()与__get()的理解与使用方法
- 浅谈PHP拦截器之__set()与__get()的理解与使用方法
- IOS异步获取数据并刷新界面dispatch_async的使用方法
- iOS-使用NSURLConnection进行Http Get和Post请求网络数据
- 在IOS中创建get,set方法
- Swift - 使用NSURL进行数据的提交和获取(POST与GET)
- linux内核中操作文件的方法--使用get_fs()和set_fs(KERNEL_DS)
- 为您解惑:jQuery中$.getJSON( )的使用方法简介之获取JSON格式的数据.........
- 重写Swift的get和set方法
- php __set 和 __get方法使用介绍
- 使用jQuery中的getJSON()方法获取数据
- python类的继承及get和set方法的使用
- 使用Swift实现iOS App中解析XML格式数据的教程
- Swift 3.0封装 URLSession 的GET/SET方法代替 Alamofire
- Swift - 类的计算属性(使用get和set来间接获取/改变其他属性的值)
- (一)----使用HttpClient发送HTTP请求(通过get方法获取数据)