DahuangPhoneiOSSwift → Swift中的集合和字典


  共有8610人关注过本帖树形打印复制链接

主题:Swift中的集合和字典

帅哥哟,离线,有人找我吗?
dahuangphone
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:407 积分:4533 威望:0 精华:0 注册:2012/9/29 7:54:10
Swift中的集合和字典  发帖心情 Post By:2014/10/11 20:54:44 [只看该作者]

集合


数组:


var a:Array<String>=["aaa","bbb"];

var b1:[String]=["bbb","bbb"];

var c1:[String]=[String]();  

var c2:[String];

var arrayWith4Elements=Array(count: 4, repeatedValue: 0)  //定义固定长度数组,填充值


c1和c2是有区别的,c1已经初始化,c2只是声明,没有开辟内存空间



a1.append("ccc");  // 追加一个

a1+=["ddd","eee"];   // 追加多个

a1.insert("xxx", atIndex: 0);   // 插入数据

  

a1.removeAtIndex(0);   // 删除数据


a1[0]="fff"



//遍历方式一

for (index,value) in enumerate(a1){ 

    println("item \(index+1):\(value)")

}


//遍历方式二

for item in a1{

    println("\(item)");

}


Swift的数组要求内部数据内类型一致,这个NSArray是不同的,比如下面


var array1=[1,2,3]     //[Int] 类型

var array2=[1,2,"3"]   //NSArray 类型,内部Int会转化为NSNumber,String转化为NSString

        

var arr1: AnyObject!=array2[0]  //此处必须使用AnyObject!,让编译器知道这是对象

        

if var num = arr1 as? NSNumber {

   println("\(num )")

}


结果 1       


字典:


var dict1:Dictionary<Int,String>=[0:"aaa",1:"bbb"];


var dict2:Dictionary<Int,String>=Dictionary<Int,String>();


let dict2:[Int:String]=[Int:String]();


let声明的字典,不但字典自己不能修改,内部元素也不能修改,因为他们是值类型,不是引用类型,数组也一样


字典也要求字典元素与定义类型保持一致,否则会自动转成NSDictionary


dict1[0]="ccc";

dict1[0]=nil;   //删除这个键值对,数组不能这么做

dict1.removeValueForKey(0);

dict1.updateValue("ddd", forKey: 1);//返回值是被替换掉的值,不是替换值


for item in dict1.keys{  //dict1.keys并不是一个数组,需要用 var array=Array(dict1.keys) 才能转成由key组成的数组

    println("\(item)");

}


for item in dict1.values{

    println("\(item)");

}


for (key,value) in dict1{

    println("\(key):\(value)");

}



var  dict1=["k1":"1","k2":2]   //这是一个NSDictionary

        

var str1:String?=dict1["k1"] as? String   //转成String

var str1:String=dict2["k1"]!   //这么写是不可以的,因为dict1["k1"]是一个AnyObject,不能转成String


        

if (str1 != nil) {

   var i1:Int?=str1!.toInt()    //转成Int

   println("\(i1!)")

}

        

var  dict2=["k1":"1","k2":"2"]   //这是一个Dictionary

        

var str2:String=dict2["k1"]!   //提取元素

        

var i2:Int? = str2.toInt()   //转成Int





因为集合在Swift中不算是引用类型,所以当复制或者值传递的时候,总是发生复制行为,但具体元素是否复制要看其类型来决定


 回到顶部