Swift 3.0 (二) 数据类型

1、字符串

// 1.String的遍历
var str = "Hello, playground"

for s in str.characters {
print(s)
}

// 2.String的拼接
// 1>两个字符串之间的拼接
let str1 = "my name is"
var str2 = " why"
str2 = str1 + str2

// 2>字符串和其他类型的拼接
let age = 18
let height = 1.88

// 在字符串中拼接其他类型的变量/常量
// 格式:(变量/常量名字)
let str3 = "age is (age), height is (height)"

// 3>字符串的格式化
// 2:3 -> 02:03
let min = 2
let second = 3
let time0 = "0(min):0(second)"

let time1 = String(format: "%02d:%02d", arguments: [min, second])

// 3.String的截取
let urlString = "www.baidu.com"
// 提示:不要使用String方法截取.index非常不好创建
// urlString.substringFromIndex(index: Index)
// String转成NSString,只需要在String后面跟上:as NSString

let prefixString = (urlString as NSString).substring(to: 3)

let middelString = (urlString as NSString).substring(with: NSRange(location: 4, length: 5))

let subfixString = (urlString as NSString).substring(from: 10)

2、数组

// 定义一个可变数组
// Swift开始中,可以使用AnyObject代替NSObject
var names : [Any] = Any

// 1.对数组的基本操作
// 1> 添加元素
names.append("why")
names.append("失败")
names.append("成功")
names.append(18)
names.append(1.88)

// 2> 删除元素
names.removeLast()
names.remove(at: 3)
names

// 3> 修改元素
names[0] = "yz"
names

// 4> 取出数组中的值
names[2]

// 2.数组的遍历
// 1> 通过下标值遍历
for i in 0..<names.count {
print(names[i])
}

// 2> forin方式
for item in names {
print(item)
}

// 3> 区间遍历
for i in 0..<2 {
print(names[i])
}

for item in names[1..<3] {
print(item)
}

// 3.数组的合并
// 1> 类型相同的数组的合并
let array1 = ["why", "+86 110", 18] as [Any]
let array2 = [1.88, "china"] as [Any]
let array3 = array1 + array2

// 2> 类型不同的数组的合并
let names1 = ["why", "yz", "lmj"]
let ages = [18, 20, 25]
var array4 = Any

for item in names1 {
array4.append(item)
}

for item in ages {
array4.append(item)
}

array4

数组操作

// 定义一个可变数组
// Swift开始中,可以使用AnyObject代替NSObject
var names : [Any] = Any

// 1.对数组的基本操作
// 1> 添加元素
names.append("why")
names.append("失败")
names.append("成功")
names.append(18)
names.append(1.88)

// 2> 删除元素
names.removeLast()
names.remove(at: 3)
names

// 3> 修改元素
names[0] = "yz"
names

// 4> 取出数组中的值
names[2]

// 2.数组的遍历
// 1> 通过下标值遍历
for i in 0..<names.count {
print(names[i])
}

// 2> forin方式
for item in names {
print(item)
}

// 3> 区间遍历
for i in 0..<2 {
print(names[i])
}

for item in names[1..<3] {
print(item)
}

// 3.数组的合并
// 1> 类型相同的数组的合并
let array1 = ["why", "+86 110", 18] as [Any]
let array2 = [1.88, "china"] as [Any]
let array3 = array1 + array2

// 2> 类型不同的数组的合并
let names1 = ["why", "yz", "lmj"]
let ages = [18, 20, 25]
var array4 = Any

for item in names1 {
array4.append(item)
}

for item in ages {
array4.append(item)
}

array4

3、字典

// 字典的类型:Dictionary
// 不可变字典:let修饰
// 可变字典:var修饰

// 不可变字典
// 1>方式一:
let dict1 : Dictionary<String, Any> = ["name" : "why", "age" : 18]
// dict1["height"] = 1.88

// 2>方式二:
let dict2 : [String : Any] = ["name" : "why", "age" : 18]

// 3>方式三:
let dict3 = ["name" : "why", "age" : 18] as [String : Any]

// 可变字典
// 1> 方式一:
var dict4 = Dictionary<String, AnyObject>()

// 2> 方式二:
var dict5 = String : AnyObject

// 3> 方式三:
var dict6 = ["name" : "why", "age" : 18] as [String : Any]

字典操作

// 定义一个可变字典
var dict = String : Any

// 1.对字典的基本操作
// 1> 添加元素
dict["name"] = "why"
dict["age"] = 18
dict["height"] = 1.88
dict["weight"] = 60.0
dict

// 2> 删除元素
// dict.removeAll()
dict.removeValue(forKey: "weight")

// 3> 修改元素
// 注意:通过该方式来修改元素,如果有对应的键,则修改.如果没有对应的键,则添加元素
dict["name"] = "lmj"
dict

// 4> 取出
dict["age"]

// 2.对字典的遍历
// 1> 遍历字典中的所有的键
for key in dict.keys {
print(key)
}

// 2> 遍历字典中所有的值
for value in dict.values {
print(value)
}

// 3> 遍历所有的键值对
for (key, value) in dict {
print(key)
print(value)
}

// 3.字典的合并
let dict1 = ["name" : "why", "age" : 18] as [String : Any]
var dict2 = ["phoneNum" : "+86 110", "height" : 1.88] as [String : Any]

// 注意:字典无论类型是否一致,都不可以直接相加来合并
//let dict3 = dict1 + dict2
for (key1, value1) in dict1 {
dict2[key1] = value1
}

dict2

3、元组

// 定义元组
// 方式一:
let a = ("why", 18, 1.88)

// 方式二:常用
let b = (name : "why", age : 18, height : 1.88)

// 方式三:
let (name, age, height) = ("why", 18, 1.88)

// 元组的使用
let error = (404, "Not Found")
error.0
error.1

let error1 = (errorCode : 404, errorInfo : "Not Found")
error1.errorCode
error1.errorInfo

let (errorCode1, errorInfo1) = (404, "Not Found")
errorCode1
errorInfo1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容