一, 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)
网友评论