swift 2

来源:互联网 发布:淘宝产品详情怎么做 编辑:程序博客网 时间:2024/05/21 08:41

1.运算符

对于运算 因为大多语言一样。+-*/ 什么的就不记录了。 只记下跟其他语言不通的吧(java):
1.区间运算符:
写法是  a...b  表示 一个包含 1到b 的值的集合  其中 包含 a 和 b。  a..b 是a到b的结合 包含a不包含b(2个点)。这个运算 用在for in 循环中 很好用
let names = ["Anna", "Alex", "Brian", "Jack"]2. let count = names.count3. for i in 0..count {4. println("第 \(i + 1) 个人叫 \(names[i])")5. }

2 字符串

在swift中 字符串是(string)特定序列的字符值(character)的集合 和大多数语言一样。字符串 也可以直接通过+ 号来相加。字符串 提供了一个 isEmpty 方法 来判断这个字符串是否为空字符串。另外在swift中字符串在运算,传参数中都是复制一个值来传递。
字符串 跟字符之间是可以相加的。结果是另外一个字符串。在我的概念里面 字符值就是有且只有一个字符的字符串。当然 不可以复制一个字符串给一个字符;

占位符:

字符串中通过\()来表示一个占位的表达式。里面不可以含有非转移双引号更反斜杠。并且不能有回车更换行。这个表达式可以使函数调用。

字符串比较:

在swift中 == 就是比较2个字符串的值,=== 是表示地址的比较(更java不同,更js 更像);
var x:String = "asdfgh";var y:String = "asdfgh";println(x==y);println(x===y);
另外 字符串本身提供了2个方法
 hasPrefix/hasSuffix 传入参数 是一个字符串。分别判断当前的字符串是否有传入的字符串作为前缀/后缀。

集合(数组与字典)

数组

//没有mac 机。 只有一个黑苹果和一个用虚拟机装的os。 结果在这个地方2个机器居然不一样。不过也没什么大不了的。 主要是 数组 一个类型的声明。 一个需要这样写
Int[] 一个需要 这样写 [Int]。 作为菜鸟 我也不知道怎么回事。估计版本不同。api不同吧。另外+ 号操作数组的时候。 一个必须是数组相加数组。另外一个是可以用 += 来加一项内容的。 这些东西就不深究了本来还不是正式版本。另外我有时候是在黑苹果和尚写代码有时候在虚拟机上写代码。所以代码可能会很乱
//刚刚看了下 貌似有个电脑用的 beta 1的版本。 应该是用新的 就是 [string] 写法。以后注意。之前的 就不该了

如同java一样。数组必须是同一种类型的。并且是类型明确的(通过类型标注或者类型推断);
创建一个数组  
var shoppingList: String[] = ["Eggs", "Milk"]
var shoppingList = ["Eggs", "Milk"]
前者通过类型标量后者通过类型推断。

数组的定义与遍历

在swift 中数组可以直接字面量定义。比如上面的 var shoppingList: String[] = ["Eggs", "Milk"];当然也可以定义空数组。写法如下:
var threeDoubles = Double[](count: 3, repeatedValue:0.0)
参数的含义分别是 数组的个数 跟初始化的默认值。这2个参数是可以省略的。:
var someInts = Int[]();
这里需要注意的是 下面这种写法
var someInts :[Int] =[];不可以省略类型。如果你导入的cocoa 西面的写法不会报错。但是是NSArray 对象。应该是object-c 的对象。这一方面不懂。貌似api会不同。应该也有办法很好的兼容。不过还是明确点好。
var someInts = []

遍历就是很普通的for in 循环。在大多语言中都有。需要注意的是。在for in 循环中 如果需要知道 index 就必须要借助enumerate方法了:
for item in shoppingList { println(item) }for (index, value) in enumerate(shoppingList) { println("Item \(index + 1): \(value)")}

数组的方法与属性



var shoppingList: String[] = ["Eggs", "Milk"];shoppingList += "xxx"; //版本不同写法 不同了? 有点编译器 String[] 必须写成 [String]. "+"号 必须加数组shoppingList[2] = "ddd";for i  in shoppingList{    println(i)}
此外 还有一些方法封属性
count  数组个数
isEmpty 数组是否为空(即 count==0)
append(+=) 添加一个项。这里 需要注意的是 += 是可以加一个数组的。而 append 只能加一个元素。
insert() 在某个位置插入 一个元素。
removeAtIndex   移除并且返回这个被移除的数据项
removeLast  移除最后一项

数组可以通过下表获取 更赋值。还可以通过 += 来增加一个值。甚至可以同时改变几个值(包括删除)
shoppingList[4...6] = ["Bananas", "Apples"]


字典

字典就是类似hashmap(java)的存在。特性上面 跟数组很像。swift字典跟数组参考一下js 其实 跟像js的对象跟数组的关系。

字典的遍历跟定义

同样也可以通过明确的值来直接定义一个字典。(直接定义一个字典跟同一种类型的元组很像):
var x=["name":"zhangsan","age":"21"];
同样的道理 在swift 中只要能够推断出类型的都可以不加类型声明。当然也有没法推断出类型的 标准写法:
var namesOfIntegers = Dictionary<Int, String>();
类似 数组中的 xx=[];当 swift可以通过上文推断出你的数据类型的时候。可以这么写 xx=[:]来表示一个空的字典。
遍历 仍然是 for in循环。:
for (airportCode, airportName) in airports {
 println("\(airportCode): \(airportName)")
 }

字典的方法与属性:

很多地方跟数组相同。其实字典跟数组都是 由泛型集合来实现的。所有很多地方一样。
count  字典个数
isEmpty 字典是否为空(即 count==0)
removeValueForKey :删除对应key的内容
需要特别注意的方法 应该就是:updateValue(forKey:) 看方法名字 还是能够明白这个方法的含义的。
需要特别注意的是 这个函数的放回值是以前的值 而不是更新后的值。

if let oldValue = airports.updateValue("Dublin Internation", forKey: "
DUB") {
 println("The old value for DUB was \(oldValue).")
}

0 0
原创粉丝点击