IOS中的Swift基础(类和对象)

来源:互联网 发布:酷我k歌 mac 编辑:程序博客网 时间:2024/05/17 23:25

//  Person.swift

import Foundation


//类是一类物体的共有性抽象

//对象是某一类的一个具体

class Person:NSObject {

   //类里面一般由属性跟方法构成的

   //定义属性:

//    var name:String = "胡小东"

//    var age:Int = 60

    

   //必选类型的初始化

    var name:String

    var age:Int

    

   //可选类型初始化

    var grade:String?

    var count:Int?

    

    //override表示该方法是从父类继承过来的

   //外部使用"类名()"方式创建对象就会默认调用下面该方法

    overrideinit() {

        //必选类型(不是可选类型)的初始化一定要在调用初始化方法之前完成

        name ="胡小东"

        age =50

        super.init()//调用父类的初始化方法(必须)

    }


    //该方法是为了解决字典里面的一些key值,在该模型里面没有导致的系统崩溃

    overridefunc setValue(value: AnyObject?, forUndefinedKey key:String) {

    

    }

}



//  Animal.swift

import Foundation


//重载构造函数

class Animal:NSObject {

    

    var age:Int =0

    var type:String?

    

   //重载构造函数

    init(age:Int, type:String) {

        super.init()

       //如果参数列表参数名字跟类的属性名一样,需要使用self调用

        self.age = age

        self.type = type

    }

    

   //如果重载了构造方法同事没有写上系统默认的构造方法,外界无法访问到该类的构造方法

    overrideinit() {

        super.init()

    }

}


//  main.swift

import Foundation

//swift里面引用其他我们自定义的类不用导入头文件,可以直接使用


//面向过程:注意功能实现的一个过程


//面向对象:注意实现功能所要参与的对象


//创建Person对象

//类名()代表该类调用系统默认的实例化方法

let person0 = Person()

//访问对象的属性采用点语法

println(person0.name)

println(person0.age)


//属性值在该类中定义为var时,可修改其属性值

person0.name ="胡小乐"

person0.age =70

println(person0.name)

println(person0.age)


//给可选类型的属性进行赋值操作

person0.grade ="五年级"

person0.count =5

println(person0.grade!)

println(person0.count!)


//给有重载构造函数类的属性进行赋值

let animal0 = Animal(age:2, type:"dog")

println(animal0.age)

println(animal0.type!)


let student0 = Students(stuNo:1, stuName:"胡小东", stuAge:20)

let class0 = Classes(cNo:"1001", cName:"软件141", peopleCount:40)

println("\(student0.stuNo!),\(student0.stuName!),\(student0.stuAge!)")

println("\(class0.cNo!),\(class0.cName!),\(class0.peopleCount!)")


//键值编码:KVC(key-value-coding)

//是一种通过字符串间接访问对象属性的一种方法

let animal1 = Animal()

animal1.setValue("horse", forKey:"type")//key要跟你要设置的属性的名字一样

//在进行KVC赋值的时候,类的属性如果是基本数据类型的话不能是可选类型,必须有一个初始值

animal1.setValue(12, forKey:"age")

println(animal1.type!)

println(animal1.age)


let animal2 = Animal()

let dict = ["type":"monkey","age":5]


//animal2.setValue(dict["type"], forKey: "type")

//animal2.setValue(dict["age"], forKey: "age")


//setValuesForKeysWithDictionary:(keyedValues:[NSObject:AnyObject]):会将字典中的key跟对象属性的名字进行对比,如果一样,将key对应的value设置到对象的属性上,会在底层重复调用setValue(value, forKey:key)

animal2.setValuesForKeysWithDictionary(dict)

println(animal2.type!)

println(animal2.age)


1 0
原创粉丝点击