三个swift文件:
主文件:main.swift:
importFoundation
//如果在swift中引用其他我们自定义的类,不用导入头文件,直接使用
//如果是导入第三方的话,就需要引用
//面向过程:注重功能实现的一个过程
//面向对象,注重实现功能所要参与的对象
//创建Person对象
//类名()代表该类调用系统默认的实例化方法
letperson0 =Person()
//访问对象的属性采用点语法
println(person0.name)
println(person0.age)
//给必选类型的属性进行赋值操作
person0.name="lisi"
person0.age=15
println(person0.name)
println(person0.age)
//给可选类型的属性进行赋值操作
person0.grade="五年级"
person0.count=5
println(person0.grade!)
println(person0.count!)
//创建animal对象,并且赋值
letanimal0 =Animal()
animal0.age=8
animal0.type="smallDog"
println(animal0.age)
println(animal0.type!)
letdog =Animal(age:2, type:"cat")
println(dog.age)
println(dog.type!)
//练习题1
//新建两个类,每一个类有三个属性,给每一个类重载构造方法并使用TA
//键值编码:KVC(key-value-coding)
//是一种通过字符串间接访问对象属性的一种方式
letanimal1 =Animal()
animal1.setValue("horse", forKey:"type")
//key要跟你要设置的属性的名字一样的字符串
println(animal1.type!)
//在进行KVC赋值的时候,类的属性如果是基本数据类型的话,不能是可选类型的
animal1.setValue(22, forKey:"age")
println(animal1.age)
//字典转模型
letanimal2 =Animal()
letdict = ["type":"monkey","age":12]
animal2.setValue(dict["type"], forKey:"type")
animal2.setValue(dict["age"], forKey:"age")
animal2.setValuesForKeysWithDictionary(dict)
println(animal2.type)
println(animal2.age)
//setValuesForKeysWithDictionary(dict)会将字典dict里面的key跟对象属性的名字进行对比,如果一样的话就将key对应的value设置到对象的属性上,会在底层重复的调用setValue(value,forKey:key)
person.swift:
importFoundation
//类是一类物体的共有性抽象
//对象是某一类的一个具体
classPerson:NSObject{
//类一般有属性和方法构成
//定义属性:
// var name:String = "zhangsan"
//var age:Int = 12
//必选类型的初始化
varname:String
varage:Int
//可选类型初始化
vargrade:String?
varcount:Int?
//override表示该方法是从父类那边继承过来的
//外部使用类名()方式创建对象就会默认调用下面该方法
overrideinit() {
//必选类型(不是可选类型)的初始化一定要在调用super.init()之前完成
name="zhangsan"
age=27
super.init()//调用父类的初始化方法
}
}
animal.swift:
importFoundation
//重载构造函数
classAnimal:NSObject{
varage:Int=0
vartype:String?
//重载构造函数
init(age:Int,type:String){
super.init()//只要在init()方法里面,一定要调用super.init()
//如果参数列表参数名字和类的属性名一样,就需要使用self调用,否则不用
self.age= age
self.type= type
}
//如果重载了构造方法,同时没有写上系统默认的构造方法,外界是没法访问到该类默认的构造方法
overrideinit() {
super.init()
}
//这个方法是为了解决字典里面的一些key值该模型里面没有导致的系统奔溃
overridefuncsetValue(value:AnyObject?, forKey key:String) {
}
/*
init(tempAge:Int,tempType:String){
super.init()
age = tempAge
type = tempType
}
*/
}