前面主要是介绍swift语言中基本类型的用法,今天给大家介绍的是swift的结构体的用法,swift中结构体的用法和其他语言的用法,还有不太一样,不过您多敲几遍,就可以理解结构体,结构体在ios开发中是灰常重要的一部分,如果您很好的掌握结构体,在后面ios开发中,会理解的更加清楚。

 

一:结构体声明

复制代码
格式:

struct  结构体名 {

}

说明:

1: struct  是定义结构体的关键字
复制代码

例子

复制代码
/*

1:struct 是结构体的关键字

2:student 结构体名称

3:student()  创建一个结构体变量
*/

struct  student {
  
}


var stu = student () //student() 表示创建一个结构体变量
复制代码

二 :结构体声明 字段

复制代码
定义结构体字段2种方法

 struct  结构体名 {


 第一种直接定义字段名 并且给字段名赋初始值

    var 或 let  字段名 = 初始化值

 第二种定义字段名并且指定字段类型

    var 或 let  字段名:类型

}

复制代码

例子

复制代码
struct  student {
    
    var  age = 0 //直接定义一个字段名称,并且给字段名赋初始值
    
    var  name:String // 直接定义一个字符串字段name。
    
}
复制代码

 

三 :结构体声明 字段的访问

复制代码

一: 创建结构体变量,结构体的字段都必须有初始值,否则会报错

二: 结构体内部 只有在构造函数(init)中修改字段的值,在结构体内部中方法和属性内不能直接修改结构体内部字段的值。
三: 在结构体外部,结构体变量,可以访问结构体字段,也可以修改结构体字段的值。
①:构造函数给结构体字段 赋初始值 说明: 1: swift语言中指定结构体构造函数,是init方法 2:init执行方法,在创建结构体变量之前执行

3:在创建结构体题变量的参数必须和构造函数init 参数必须一致。 ②:创建结构体变量赋初始值

在创建结构体变量,并且直接赋值给字段,其中注意点 赋初始值的顺序必须和声明结构体的顺序一致。


复制代码

例子

无参构造函数

复制代码
struct  student {
    
    var  age = 0 //直接定义一个字段名称,并且赋初始值
    
    var  name:String // 直接定义一个字符串变量。
    
    //定义 无参数构造函数
    init() {
        name = "zs"
        age = 1
    }
    

}

/*
1: student () 创建一个结构体变量 ,系统会自动调用构造函数init()
*/
var stu = student ()
println("name=\(stu.name),age=\(stu.age)") 运行结果 name=zs,age=1
复制代码

有参数构造函数

 

复制代码
struct  student {
    
    var  age = 0 //直接定义一个字段名称,并且赋初始值
    
    var  name:String // 直接定义一个字符串变量。
    
    //定义 有参数构造函数
    init(Name:String,Age:Int) {
        self.name = Name //self 指的是当前结构体变量    self.name 当前结构体的变量的字段
        self.age = Age
    }
    

}

/*
1;student (Name:"ls",Age:12) 创建结构体变量 系统会调动构造函数,并且创建结构体的参数于构造函数参数一致
2:student (Name:"ls",Age:12) 后面跟着的参数名称必须于构造函数参数变量名相同


*/ var stu = student (Name:"ls",Age:12) //因为构造函数有2个参数,所对应创建结构体的变量的参数要一致 println("name=\(stu.name),age=\(stu.age)") 运行结构 name=ls,age=12
复制代码

有参数构造函数 参数变量加 _ 用法

1:  创建结构体的对象中对应参数必须和构造函数对应的参数一致

2: 如果构造函数中参数变量前加 _ 其对应创建对象的参数,不需要变量名
复制代码
struct Point{
    var x = 0.0
    var y = 0.0

    init(_ x :Double ,_ y :Double){
        self.x = x
        self.y = y
    }
    
}

/*
1:     init(_ x :Double ,_ y :Double) 构造函数中对应变量前面加 _ 其对应创建对象后面不需要变量名。

*/


var p = Point(10.0,11.0)

println("x=\(p.x) y=\(p.y)")
复制代码

 




创建结构体变量赋初始值

复制代码
struct  student {
    
    var  age = 0  //直接定义一个字段名称,并且赋初始值
    
    var  name:String?  // 直接定义一个字符串变量。
    
   
    

}
/*------创建结构体变量赋初始值

var stu = student(age:12,name:"甘超波")
说明:
 1:创建一个结构体变量stu,其中字段 age 的值为12  name 的值为 "甘超波"

 注意点:
    student()括号后面跟着参数 必须和定义结构体的字段的顺序一致

  错误写法

  var  stu1 = student(name:"甘超波",age:12) 
  因为 创建结构体的变量中初始化字段的顺序和定义结构体声明字段的顺序不一致

*/


var stu = student(age:12,name:"甘超波")

println("name=\(stu.name),age=\(stu.age)")

运行结果

name=甘超波,age=12
复制代码

 

结构体 方法

  1:结构体中可以直接存储方法

 注意点: 结构体中方法不能直接修改字段的值,否则会报错

例子

复制代码
struct  student {
    
    var  age = 0  //直接定义一个字段名称,并且赋初始值
    
    
    //定义结构体方法
    func GetAge() ->Int{
        return age
    }
    
    

}

/*
注意点: 结构体中方法不能直接修改字段的值,否则会报错
*/

var stu = student()
stu.age = 12

println(stu.age)

运行结果

12
复制代码

结构体属性

属性 主要是get set方法

例子

复制代码
struct Point{
    var x = 0.0
    var y = 0.0


}



struct  CPoint {
    
    var p = Point()
    
    
    //声明属性 ,get set方法
    var GPoint :Point{
    get{
        return p
    }
    set(newPoint){
        p.x = newPoint.x
        p.y = newPoint.y
    }
    
    }
}

var p = Point(x:10.0,y:11.0)

var CP = CPoint()
CP.GPoint = p

println("x=\(CP.GPoint.x),y=\(CP.GPoint.y)")

运行结果
x=10.0,y=11.0
复制代码

 系统提供常见结构体 有 Bool  Int Float Double  String 等 

 注意点:SWift语言中 String 是结构体类型

 

结构体值传递的时候都是

 

 

后面的文章,我回陆续把我学习到swift语言的知识写出来形成一个系列。由于是新语言,难免有不足,欢迎给我提出意见。也可以加我QQ 1436051108一起讨论,如果您有什么问题,也可以直接在QQ留言发给我,我看到之后第一时间回复您

  最后总结一下。送上一直思维导图,作为文章的结束

 

posted on 2015-08-30 19:51  lkislam  阅读(253)  评论(0编辑  收藏  举报