swift中模型Model的创建
来源:互联网 发布:服务器数据恢复 沈阳 编辑:程序博客网 时间:2024/06/07 18:26
//简介 oc是一个面向对象即模型的开发,一般规范的开发都是以模型作为对象进行开发的。那么在swift中模型也同样重要下面介绍一下模型的赋值
1.介绍下 模型一键赋值的代码 setValuesForKeyWithDictionary 这句话的作用 是把字典Dictionary中的key对应的Value 赋值给模型中的与key一样的属性
1)分三种情况 第一种情况是 模型中的属性等于 字典中的额key 并且一一对应 那么可以赋值
2)第二种 模型中的属性大于字典中的key即模型除了与字典一一对应的属性之外还有其他属性 那么这个赋值也有用
3)第三种 模型中的属性小于或者字典中存在模型中没有的属性名字 那么就会报错
2.针对第三种情况 解决办法是 在模型中加上这句话就可以了 不要进行任何操作
override func setValue(value:AnyObject?, forUndefinedKey key:String) {
import UIKit
class PersonModel: NSObject {
//这是一个Person模型
/// 年龄
var age:Int =0
/// 姓名
var name:String =""
/// 性别
var sex:String =""
/// 这边定义一个在字典里面的key是swift中的关键字的属性
var undefine:String =""
/**
这个方法是防止使用setvalueforkeysWithDictionary的时候字典里的key在模型里面没有处理方法一般是把方法写出来里面不用写东西这样字典里出现模型没有的key的时候不会报错也不会赋值(除非像下面自己手动赋值)
- parameter value: 模型中未定义的key值对应的value值
- parameter key: 模型中未定义的key值或者跟跟关键字冲突的字典的key值
*/
overridefunc setValue(value:AnyObject?, forUndefinedKey key:String) {
if key =="Int"
{
undefine = valueas!String
}
}
/**
写一个构造函数主要目的是让其初始化的时候就有进行模型赋值不然一般步骤是创建这个模型然后模型进行setvaluesForkeywithdictionary
- returns: 返回赋值后的模型
*/
overrideinit() {
super.init()
let dic = ["age":18,"name":"Clement","sex":"man","Int":"test"]
//模型一键赋值这个其实是运用了kvc的原理
self.setValuesForKeysWithDictionary(dic)
}
/**
这边是自定义的构造函数可以从外面传参使其初始化
- parameter dic: 初始化模型的字典
- returns: 返回赋值后的模型
*/
init(dic:[String:AnyObject])
{
super.init()
//模型一键赋值这个其实是运用了kvc的原理
self.setValuesForKeysWithDictionary(dic)
}
}
import UIKit
class ViewController: UIViewController {
overridefunc viewDidLoad() {
super.viewDidLoad()
//方式1用构造函数初始化并打印结果这个是自带的模型
let personOne =PersonModel()
print("模型的参数\(personOne.age) \(personOne.name) \(personOne.sex) \(personOne.undefine)")
//方式二用自定义的构造函数
let dic = ["age":28,"name":"Clement__","sex":"man__ ","Int":"nuewtype"]
let personTwo =PersonModel.init(dic: dic)
print("模型TWO的参数\(personTwo.age) \(personTwo.name) \(personTwo.sex) \(personTwo.undefine)")
//方式三不写构造函数(即不用init)
let personThree =PersonModel()
let dicThree = ["age":38,"name":"Clement__three","sex":"man__Three","Int":"nuewtype_three"]
//外部对模型进行赋值
personThree.setValuesForKeysWithDictionary(dicThree)
print("模型Three的参数\(personThree.age) \(personThree.name) \(personThree.sex) \(personThree.undefine)")
}
overridefunc didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
//输出结果
模型的参数18 Clement man test
模型TWO的参数28 Clement__ man__ nuewtype
模型Three的参数38 Clement__three man__Three nuewtype_three
- swift中模型Model的创建
- Swift 2.0- 模型的创建
- Yii的Model ( 模型)创建及使用
- yii的Model ( 模型)创建及使用
- Yii的Model ( 模型)创建及使用
- Yii的Model ( 模型)创建及使用
- 如何在Swift中创建和使用Model [ MagicalRecord ]
- swift版本的model
- swift中UICollectionView的使用(headerview/footerview/cell/model)
- Laravel中创建Model
- model模型中 要实现的几个方法
- Swift中创建单例的方法
- Swift中创建一个UIBarButtonItem的分类
- django学习之三:model模型创建
- Model类的创建
- ThinkPHP的Model创建
- django中创建一个Model
- django中创建一个Model
- Android Binder机制理解
- leetcode 263. Ugly Number
- 最完美的ZoomImageView,可根据点击/多指触控 放大,放小的ImageVIew
- 零碎的小知识-最迟开始时间&最早开始时间
- Billionaires
- swift中模型Model的创建
- java学习之数组
- 遍历Map的四种方法
- iOS 沙盒的目录结构
- PHP的PSR-0标准利用namespace来做autoloading
- Linux vi/vim
- ios开发使用CoreData存储数据时,快速写下FetchRequest语句操作
- PHP中单引号和双引号的区别之PHP单双引号那些事
- CentOS 6.4安装Python