//
// 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具体的数据类型
//创建一个key为String,value为String的一个空的字典
//[String:String]表示一个key为String,value为String的字典类型 ,后面的小括号表示初始化
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"]
//遍历打印key和value分别为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 = 值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)")