IOS中的Swift基础04(字典,枚举)

//

//  main.swift

//  SwiftLesson04

//

//  Created by lanou on 16/10/26.

//  Copyright (c) 2016 lanou. All rights reserved.

//



import Foundation


//有如下⼀个数组,[“type = iOS", "Device = iPhone", "count = 11344115@163.com", "password = 12345”],将其中的内容用”&"符号拼接成一个字符串

let array = ["type = iOS","Device = iPhone","count = 11344115@163.com","password = 12345"]

//拼接后: type = iOS&Device = iPhone&count = 11344115@163.com&password = 12345 

//类名() :表示初始化该变量

var str = String()

for var i = 0; i < array.count; i++ {

    if i == (array.count - 1) {

        str += array[i]

    }else{

        str += array[i]+"&"

    }

}

println(str)


//定义一个字符串串数组,遍历该数组,如果数组中的字符串的长度是4以上并且以"he"开头就将该字符串放到一个新的数组当中

let array1 = ["type = iOS","Device = iPhone","count = 11344115@163.com","password = 12345","hehjkhk","he1"]

//类名() :表示初始化该变量

var newArray = [String]()//初始化一个元素为字符串的空数组

for element in array1{

    if element.lengthOfBytesUsingEncoding(4) > 4 && element.hasPrefix("he"){

        newArray.append(element)

    }

}

println(newArray)


//字典:字典是一个无序集合,用来存储具有⼀一对应关系的数据,比如说name-张三,gender- male,age-16(key-value) 

//字典类:Dictionary,字⾯量创建方式也是中括号[key1:value1,key2:value2,....],多个键值对之间用 逗号隔开

//数组:[element1,element2.....]

//使用字典的时候必须明确字典的key-value具体的数据类型

//创建一个keyString,valueString的一个空的字典

//[String:String]表示一个keyString,valueString的字典类型 ,后面的小括号表示初始化

let dict = [String:String]()

let dict1:[String:Int] = ["age":18,"count":20,"grade":5]

let dict2:[String:String] = ["name":"张三","gender":"male"]

println(dict1)

println(dict2)


//通过key值来获取对应的value:dict[key]

//通过key值来获取到的value值是一个可选类型 let age = dict1["age"]

let gen = dict2["gender"]

println("age = \(gen)")


//获取所有的key值和所有的value 

let keys = dict2.keys

let values = dict2.values


//遍历所有的key

for key in keys {

        print(key)

}

println()


//遍历所有的value

for value in values{

    println(value)

}

println()


//字典遍历

for (key,value) in dict2{

    print("key = \(key),value = \(value)")

}

println()



let tempDict = ["key1":"value1","key2":"value2","key3":"value2","key4":"value2"]

//遍历打印keyvalue分别为key2,value2 的健值对

for (a,b) in tempDict{

    if a == "key2" && b == "value2"{

        print(a,b)

    }

}

println()


//字典同样分为 可变字典(var) 不可变字典(let)

//可变字典可以增加删除键值对

var mDict:[String:Int] = ["age":18]

//增加健值对:grade:5

//字典[key] = value: 如果key存在的话这就是更新键值对的操作,如果不存在的话就是一个增加健值对的操作

mDict["grade"] = 5

println("mDict = \(mDict)")

mDict["grade"] = 6

println("mDict = \(mDict)")


//合并两个字典

let dict11 = ["name":"lisi","gender":"male"]

var dict22 = ["grade":"5","phone":"1234567","name":"zhangsan"]

for (key,value) in dict11{

    dict22[key] = value

}

println("dict22 = \(dict22)")


//删除键值对

//dict22.removeAll(keepCapacity: true):移除所有的key-value值后是否保存⼤小

//removeValueForKey(key):根据一个key值来移除键值对

dict22.removeValueForKey("name")

println("dict22 = \(dict22)")


// 新建一个字典存储下⾯面信息:

/*

    C: 成⻰龙:123 陈⼩小春:234 陈冠希:345 D: ⼤大S:456

    F: 范冰冰:567 发哥:678

    Z: 甄⼦子丹丹:789 钟镇伟890

*/

let nameDict:[String:[String]] = ["C":["成⻰龙","陈⼩小春","陈冠希"],"D":["⼤大S"],"F":["范冰冰","发哥"],"Z": ["甄⼦子丹丹","钟镇伟"]]

let confidictDict:[String:[String:Int]] = ["C":["成⻰龙":123]]


//swift: 枚举 

//不用跟整型数字关联,默认也没有跟整型数字关联

//可以跟任意类型关联,比如整型,浮点型,字符串。

/*

  不跟任何数据关联的枚举格式

    enum 自定义的枚举类型{

        case 枚举值0

        case 枚举值1

        case 枚举值2

        ....

    }

  如果是关联了数据的枚举格式:

    enum 自定义枚举类型:关联的数据类型(比如Int,Double,String){

        case 枚举值0 =

        case 枚举值1 = 1

        .......

    }

*/

//枚举作⽤:将⼀些有特定意义的英⽂跟数字⼀一对应起来

enum Month{

    case jan

    case feb

    case mar

    case apr

    case may

}


//如果枚举值关联的是整型值的话,后面的枚举值会自动累加1

enum number:Int{

    case one = 10

    case two = 20

    case three = 30

    case four

    case five

}


//如果枚举类型跟非整型值进⾏关联的话,所有的枚举值都应该关联上特定的值

enum Length:Double{

    case short = 2.3

    case middle = 4.6

    case large = 6.9

}


enum Grade:String{

    case One = "First"

    case Two = "Second"

    case Three = "Third"

}


//创建枚举变量

let month0 = Month.jan


//如果明确了变量或者常量是属于某一种枚举类型,那么赋值可以直接使⽤ .枚举值

let month1:Month = .mar


//hashValue跟枚举值的排序有关

println(month0,month0.hashValue)

println(month1,month1.hashValue)

let num0 = number.one

let num1:number = .five


//枚举值.rawValue 访问到的是该枚举值关联的值(枚举变量有关联的时候才会出来的)

//枚举值.hashValue 访问到的是该枚举值在枚举类型中位置

println("num0 = \(num0),\(num0.hashValue),\(num0.rawValue)")

println("num1 = \(num1),\(num1.hashValue),\(num1.rawValue)")

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值