
Swift字典每个值(value)都关联唯一的键(key),键作为字典中的这个值数据的标识符。
和数组中的数据项不同,字典中的数据项并没有具体顺序。我们在需要通过标识符(键)访问数据的时候使用字典,这种方法很大程度上和我们在现实世界中使用字典查字义的方法一样。
Swift字典的key没有类型限制可以是整型或字符串,但必须是唯一的。
如果创建一个字典,并赋值给一个变量,则创建的字典就是可以修改的。这意味着在创建字典后,可以通过添加、删除、修改的方式改变字典里的项目。如果将一个字典赋值给常量,字典就不可修改,并且字典的大小和内容都不可以修改。
[objc] view plain copy
在CODE上查看代码片派生到我的代码片
// 创建字典
// 创建一个特定类型的空字典,格式为:var dict = [KeyType: ValueType]()
// 创建一个空字典,键的类型为 Int,值的类型为 String 的简单语法:
var dict01 = [Int: String]()
print(dict01)
// 创建一个字典的实例:
var dict02 :[Int:String] = [1:"One", 2:"Two", 3:"Three"]
print(dict02)
var dict03 = ["name":"DevZhang", "job":"iOSDev", "company":"VSTECS"]
print(dict03)
[objc] view plain copy
在CODE上查看代码片派生到我的代码片
// 访州肢问字典
// 我们可以根据字典的索引来访问数组的元素,语法如下:var value = dict[key]
let value01 = dict02[1]
print(value01)
let value02 = dict03["name"]
print(value02)
[objc] view plain copy
在CODE上查看代码片派生到我的代码片
// 添加数据
let value03 = dict02.updateValue("Four", forKey: 4) //或 dict02[4] = "Four"
print(value03)
print(dict02)
[objc] view plain copy
在CODE上查看代码片派生到我的代码册配世片
// 修改字典
// 方法1 使用 updateValue(forKey:) 增加或更新字典的内容。如果 key 不存在,则添加值,如果存在则修改 key 对应的值。格式为:dict.updateValue(value, forKey:key)方法返回Optional值。
var value04 = dict02.updateValue("TwoTmp", forKey: 2)
print(dict02)
print(value04)
// 方法2 通过指定的 key 来修改字典的值
var value05 = dict02[3]
print(value05)
value05 = "ThreeTmp" // 修改无效
print(dict02)
dict02[3] = "ThreeTmp" // 修改有效
print(dict02)
[objc] view plain copy
在CODE上查看代码片派生到我的代码片
// 移除 Key-Value 对
// 1 使用 removeValueForKey() 方法来移除字典 key-value 对。如果 key 存在该方法返回移除的值,如果不存在返回 nil 。
let valueRemove01 = dict02.removeValueForKey(2)
print(valueRemove01)
print(dict02)
// 2 通过指定键的值为 nil 来移除 key-value(键-值)对。
dict02[1] = nil
print(dict02)
[objc] view plain copy
在CODE上查看代码卖卖片派生到我的代码片
// 遍历字典
// 1 使用 for-in 循环来遍历某个字典中的键值对。
for (key, value) in dict03
{
print("字典 key \(key) - 字典 value \(value)")
}
// 2 使用enumerate()方法来进行字典遍历,返回的是字典的索引及 (key, value) 对
for (key, value) in dict03.enumerate()
{
print("字典 key \(key) - 字典 (key, value) 对 \(value)")
}
// 3
for key in dict03.keys
{
let value = dict03[key]
print("key = \(key), value = \(value)")
}
[objc] view plain copy
在CODE上查看代码片派生到我的代码片
// 字典转换为数组
// 提取字典的键值(key-value)对,并转换为独立的数组。
let dictKeys = [String](dict03.keys)
for (key) in dictKeys
{
print("\(key)")
}
let dictValues = [String](dict03.values)
for (value) in dictValues
{
print("\(value)")
}
[objc] view plain copy
在CODE上查看代码片派生到我的代码片
// count 属性
let count01 = dict03.count
print(count01)
[objc] view plain copy
在CODE上查看代码片派生到我的代码片
// isEmpty 属性
let empty01 = dict01.isEmpty
print("dict01 is \(empty01)")
let empty02 = dict03.isEmpty
print("dict03 is \(empty02)")
```
var dict:[String:String] = [String:String]()
var dict1 = ["id":"123","name":"小胖纸"]
```
* 字典的长度
```
print(dict1.count)
```
* 判断字典是否为空
```
print(dict1.isEmpty)
```
* 添加值
```
dict1["sex"] = "male"
```
* 修改值
```
dict1["name"] ="徐少"
dict1.updateValue("空举456", forKey:"id")
```
* 删除
```
dict1.removeValue(forKey:"id")
```
* 遍历
```
for item in dict1.keys{
print(dict1[item]!)
}
for value in dict1.values{
print(value)
}
察或 //元祖的方式拿到key和value
for (key,value) in dict1 {
print("\败亏伍(key)--\(value)")
}
for (index,value) in dict1.enumerated() {
print("\(index)--\(value)")
}
//字典的合并 不建议不同类型的字典合并
var a = ["name":"徐少","sex":"male"]
var b = ["id":"123","age":"25"]
for (key,value) in b {
a[key] = value
}
```
中括号[ ] 表示,数组值之间用逗号分隔1,如果数组声明为常量,则本身不能修改,且数组中的值也不能肆高修改
2,指定数组的类型,语法:Array<Type>可以简写为 [Type]
4,当检测到数组中的元素相同的时候是 Swift类型的数组
当检测数组中的元素类型不同的时候, 则是OC类型的数组
如果想变成NSMutableArray则要显式的声明
5, var nullArray = [] 创建的是NSArray的数组类型, 因为Swift编译器不能推导数组类型
6,创建Swift空数组
7,创建初始化长度为4的Int数组, 并且这四个元素的初始化的值都是2
8,数组相加即为合并数组
9,
区间范围和等号右侧的元素个数不同, 元素多则插入,元素少去除多余的区间
max 和 min超过了数组宏拍的上下边界,则直接抛出异常
10, append insert removeall 都没有返回值
removelast removeAtIndex有返回值,返回被移除的值
empty判断是否为空, count计算数组的个数
11, 数组可以使用符合加法进行赋值 += 来追加元素的个数
12, 枚举数组中的元素
for...in 用变量或者下标都行
for(index, value) in enumerate(fourInt){}
1,字典使用中括号,key-value之间用逗号隔开, key:value的形式
如果字典中的key和value不是String类型的, 则蔽雹羡不需要使用引号
2
3, 类型不同则是OC类型的NSDictionary, 若要是NSMutableDictionary 则显式声明
4,用let声明的字典,不仅字典本身不能再被修改,而且字典中的值也不能别修改
5,
6, dict[key] = value 如果有原来的key则修改, 没有则添加
7, updataValue方法返回修改前的值, dict[key] = nil 删除key-value
removeValueForKey 指定要删除数据的key, 并且返回待删除的value
8,
as! as? 同类型的 OC和Swift之间的转换
Int类型的 NSObject类型值转换成Int类型,不需要可选类型而是要加上!
as [String : Any]转换成Swift中的字典
9,遍历字典
当字典是NSDictionary的时候, 可以先将其转换成Dictionary的格式,然后再使用Keys 和 values属性获取相应的key 和 value
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)