基础变量类型 Int, Float, Double
这三种基础类型可以直接通过显示类型转换来进行转换,swift是不接受隐式类型转换的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 var a : Int = 1 var b : Double = 2.1 var c: Float = 3.2 a = Int (b) a = Int (c) a = 1 b = Double (a) b = Double (c) b = 2.1 c = Float (a) c = Float (b)
如果想让这三种类型变成String类型,有两种简单的方法
1 2 3 4 5 6 7 var a : Int = 1 var b : Double = 2.1 var c: Float = 3.2 var d:String = "test" d = "\(a) " + "\(b) " + "\(c) " d = String (a) + String (stringInterpolationSegment: b) + String (stringInterpolationSegment: c)
第二种方式类似显示类型转换,但其实那只是字符串的一种初始化方式,在下面的字符串部分会详细介绍。
字符串 String/字符 Character 初始化 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 var str = "hello world" var str1 :String? var str2 = "" var str3 = String() str1?.isEmpty str2.isEmpty var str4 = String(stringInterpolationSegment: true )var str5 = String("hello" )var str6 = String(11 )
注:Character和String类型都是使用双引号,所以很多时候这两个类型不会分的那么清楚,但Character永远都是一个字符,而不会成为多个
使用
String可以直接使用 + 操作,但Character不可以使用 + 操作
除了 + 操作外还能使用append方法进行字符和字符串的追加
可以使用for-in方式进行字符串的遍历
可以使用countElements()进行字符串长度的计算
字符串的比较,直接使用关系运算符即可,按字典序进行比较
1 2 3 4 5 6 7 8 9 10 11 12 13 var str_a = "abc" var str_b = "abc" str_a == str_b //truevar str_c = "ab" str_a == str_c //falsestr_a > str_c //truevar str_d = "abd" str_a < str_d //true
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 var nameArray = ["第一章 1.基本环境介绍" , "第二章 1.整型" , "第二章 2.浮点型" , "第二章 3.字符串" , "第二章 4.Optional" , "第二章 5.nil聚合" , "第三章 1.算术运算符" , "第三章 2.逻辑运算符" , "第三章 3.位运算符" ] var countPrefix =0 , countSuffix=0 for name in nameArray{ if name.hasPrefix("第二章" ) { countPrefix++ } if name.hasSuffix("运算符" ) { countSuffix++ } } countPrefix countSuffix
1 2 3 str.capitalizedString str.uppercaseString str.lowercaseString
1 2 3 4 var str1 = " hello! " str1.stringByTrimmingCharactersInSet (NSCharacterSet.whitespaceCharacterSet() ) str1.stringByTrimmingCharactersInSet (NSCharacterSet(charactersInString: " !" ) )
1 2 3 4 5 6 var str2 = "Hello Jason and Jane" str2.componentsSeparatedByString (" " ) var str3 = "Hello Jason and M-J-Alex" str3.componentsSeparatedByCharactersInSet (NSCharacterSet(charactersInString: " -" ) )
1 2 3 4 var str4 = ["Hello" , "I" , "am" , "Jason" ] var str5 = "-" str5.join (str4)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 str = "English is a West Germanic language that was first spoken in early medieval England and is now a global lingua franca" str .rangeOfString("West" ) str .rangeOfString("west" , options: NSStringCompareOptions.CaseInsensitiveSearch) str .startIndex str .endIndex let strRange = Range <String.Index> (start:str.startIndex, end:str.endIndex) let newEndIndex:String.Index = advance(str.startIndex, 14 ) let newStrRange = Range <String.Index> (start:str.startIndex, end:newEndIndex) str .rangeOfString("west" , options: NSStringCompareOptions.CaseInsensitiveSearch, range: newStrRange) var newEndIndex2 = advance(str.startIndex, 9 ) str .substringToIndex(newEndIndex) var newStartIndex2 = advance(str.startIndex, 3 ) str .substringFromIndex(newStartIndex2) str .substringWithRange(Range <String.Index>(start: newStartIndex2, end: newEndIndex2) )
1 2 3 4 5 6 7 8 9 10 //insert a character 这个会改变str 的原始值str .insert ("H" , atIndex: str .startIndex)str //remove 这个会改变str 的原始值 str .removeAtIndex(advance(str .startIndex, 10 ))str //replace str .replaceRange(Range <String .Index >(start : advance(str .startIndex, 5 ), end : advance(str .startIndex, 12 )), with : " again " )
数组 Array swift中数组与OC中数组的区别:
初始化 1 2 3 4 5 6 7 8 var array1 = ["a" , "b" , "c" , "d" , "f" ]var array2:[String ]? var array3:Array <String >? var array4 = Array <String >() var array5 = [] array2?.isEmpty array4.isEmpty
基本操作 1 2 3 4 5 6 7 8 9 10 11 var array = ["A" , "B" , "C" , "D" , "E" ]array.append ("F" ) array += ["G" , "H" ] array.insert ("hello" , atIndex: 0 ) array.removeAtIndex (3 ) array.removeLast () array[1 ] = "KO" array[2 ...5 ] = ["new" ]
遍历 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 for index in 0 ..<array.count { println (array[index]) } for item in array{ println (item) } for (index, item) in enumerate (array){ println ("\(index) -\(item) " ) }
字典 Dictionary swif中字典和OC中字典的区别(和数组差不多)
初始化 1 2 3 4 5 6 7 8 var dict1 = [22 :"Hello" , 44 :"Jason" , 33 :"World" ]var dict2 :Dictionary<Int, String> ? var dict3 :[Int :String]? var dict4 = [:] var dict5 = Dictionary<Int, String> () dict2?.isEmpty dict5.isEmpty
注:数组和字典中使用[]声明的空数组、字典,最好在前面加上具体的变量类型
基本操作 1 2 3 4 5 6 7 8 9 dict1.count dict1.isEmpty dict1[12 ] = "New" dict1[12 ] = nil dict1[12 ] dict1.removeValueForKey (22 ) dict1.updateValue ("Kate" , forKey: 44 )
遍历 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 for (key, value) in dict1 { println("\(key)-\(value)") } dict1.keys //it likes an array, and we can use Array ( dic1.keys ) to translate a real array dict1.values //like blove up Array (dict1.keys )Array (dict1.values )for key in dict1.keys { println(key ) } for value in dict1.values { println(value ) }
集合 Set
集合(Set)用来存储相同类型并且没有确定顺序的值。当集合元素顺序不重要时或者希望确保每个元素只出现一次时可以把集合当做是数组另一形式。
集合和字典存储的类型必须是可哈希化的,Swift 的所有基本类型(比如String,Int,Double和Bool)默认都是可哈希化的
+ Set类型可以使用数组字面量进行赋值,但必须要注明变量的类型为Set,否则会被推断成数组类型
Set类型是无序的,但可以使用类中的sort函数进行相关的排序
初始化 1 2 3 4 5 var set : Set <String > = ["Rock" , "Classical" , "Hip hop" ]var set2 = Set <Character>() var set3: Set <String > = [] var set4: Set = ["Rock" , "Classical" , "Hip hop" ]
基本操作 1 2 3 4 5 set.isEmpty set.count set.contains ("Hey" ) set.insert ("You" ) set.remove ("Rock" )
遍历 1 2 3 4 for item in set { print(item ) }
集合操作
使用“是否等”运算符(==)来判断两个集合是否包含全部相同的值。
使用isSubsetOf(_:)方法来判断一个集合中的值是否也被包含在另外一个集合中。
使用isSupersetOf(_:)方法来判断一个集合中包含的值是另一个集合中所有的值。
使用isStrictSubsetOf(_:)或者isStrictSupersetOf(_:)方法来判断一个集合是否是另外一个集合的子集合或者父集合并且和特定集合不相等。
使用isDisjointWith(_:)方法来判断两个结合是否不含有相同的值。
元组 Tuple
Tuple能放不同类型的元素,而Array只能放相同类型的元素
1 2 3 4 5 6 7 8 9 10 11 var tup = (flag: true, name:"Jason" )var (flag, name) = tupvar (flag1, _) = tup tup.flag tup.name flag name flag1
注:元组这个数据类型和之前的有些区别,好像无法定义一个空的元组