Swift4.2~数组和字典(Array, Dictionary)基本类型转换

一, array

中括号[ ] 表示,数组值之间用逗号分隔
1,如果数组声明为常量,则本身不能修改,且数组中的值也不能修改
2,指定数组的类型,语法:Array<Type> 可以简写为 [Type]

typeArray = ["123", "34"]

var typeArray1:[String]
var typeArray2:Array<Int> = [1, 2, 3]
        
//3,如果声明了数组,但是没有初始化该数组,是不能被引用的
var typeArray3:[String]
print(typeArray3) //这里会报错,你可以尝试下.

4,当检测到数组中的元素相同的时候是 Swift类型的数组
当检测数组中的元素类型不同的时候, 则是OC类型的数组
如果想变成NSMutableArray则要显式的声明

var myArray:NSMutableArray = [1, 3, "xyz"]

var myArray:Array<Int> = [1, 3, "xyz"]  //是错误的,因为最后一个元素不是整型

5, var nullArray = [] 创建的是NSArray的数组类型, 因为Swift编译器不能推导数组类型

6,创建Swift空数组

var nullArray1 = [Int]()
var nullArray2:Array<Float> = []
var nullArray3:[String] = []

7,创建初始化长度为4的Int数组, 并且这四个元素的初始化的值都是2

var fourInt = [Int](repeating: 2, count: 4)
print(fourInt)

8,数组相加即为合并数组

9,
区间范围和等号右侧的元素个数不同, 元素多则插入,元素少去除多余的区间
max 和 min超过了数组的上下边界,则直接抛出异常

var arrayName[min..max] = [item1, item2, item3]

10, append insert removeall 都没有返回值
removelast removeAtIndex有返回值,返回被移除的值
empty判断是否为空, count计算数组的个数

11, 数组可以使用符合加法进行赋值 += 来追加元素的个数
12, 枚举数组中的元素
for...in 用变量或者下标都行
for(index, value) in enumerate(fourInt){}

for value in fourInt {
      print(value)
}
       
for (index, value) in fourInt.enumerated() {
      print(index, value)
}

二, Dictionary

1,字典使用中括号,key-value之间用逗号隔开, key:value的形式
如果字典中的key和value不是String类型的, 则不需要使用引号

2

var employ1:Dictionary<String, String> = ["name":"bill", "price":"345"]
var employ2:[String:String] = ["name":"bill", "pric":"345"]
var employ3 = ["name":"bill", "price":"345"]

3, 类型不同则是OC类型的NSDictionary, 若要是NSMutableDictionary 则显式声明

4,用let声明的字典,不仅字典本身不能再被修改,而且字典中的值也不能别修改

5,

var nullDict1 = Dictionary<Int, String>()
var nullDict11 = Dictionary<String, Int>()
var nullDict12 = Dictionary<String, Any>()

var nullDict2 = [Int:String]()
var nullDict3 = [String:Any]()

nullDict1 = [1:"value"]
nullDict11 = ["key1":1]
nullDict12 = ["key1":"f"]

6, dict[key] = value 如果有原来的key则修改, 没有则添加

7, updataValue方法返回修改前的值, dict[key] = nil 删除key-value
removeValueForKey 指定要删除数据的key, 并且返回待删除的value
8,

        var dict1 = ["key1":"20", "key2":"abd"]
        //String 转换成Int 类型 转换的时候使用可选变量
        var numStr:String = "123"
        var num:Int? = Int(numStr)
        
        var num1:Int? = dict1["key1"] as? Int
        print("num1 == \(num1)")
        
        //String -> Int
        var numStr2:String = dict1["key1"]!
        print("numStr2 == \(numStr2)")
        var num2:Int = (Int(numStr2))!
        print("num2 == \(num2)")

as! as? 同类型的 OC和Swift之间的转换
Int类型的 NSObject类型值转换成Int类型,不需要可选类型而是要加上!
as [String : Any]转换成Swift中的字典

 var dict2 = ["key1":"20", "key2":123] as [String : Any]
        
//get Int from Dictionary
var value3:Int = dict2["key2"] as! Int
var valueStr3:String? = String(value3)
print("valueStr3 == \((valueStr3))")
        
if value3 is String {
       print("value3 ==\(value3) 是字符串")
}else{
       print("value3 ==\(value3) 是数字")
 }

//Int -> String
var valueStr4:String = "\(value3)"
if valueStr4 is String {
      print("valueStr4 ==\(valueStr4) 是字符串")
}else{
      print("valueStr4 ==\(valueStr4) 是数字")
}

9,遍历字典

for (key, value) in dict2 {
      print(key)
      print(value)
}
        
//keys values 的属性
for key in dict2.keys {
        print(key)
}
        

当字典是NSDictionary的时候, 可以先将其转换成Dictionary的格式,然后再使用Keys 和 values属性获取相应的key 和 value

var dict3:NSMutableDictionary = ["key1":12, "key2":"kk"]
var dict4:Dictionary<String,Any> = dict3 as! Dictionary

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