内容包括:01变量&常量  02分支  03循环  04字符串  05数组  06字典  07函数

01变量&常量

//: Playground - noun: a place where people can play
import UIKit var str = "Hello, playground"
/*:
let 常量
var 变量 * 自动`推导`,能够根据右边的代码,推导出变量的准确类型
*/ let x = 100
// 常量一旦设置数值,就不能再次修改
//x = 300 var y = 200
y = 300 print(x + y) /*:
swift 对数据类型要求异常严格 * 整数的默认类型是 Int(long 64位)
* 小数的默认类型是 Double (OC 中使用比较多的是 CGFloat)
* swift 中任何时候,都不会做 `隐式转换`,如果要对不同类型的数据进行计算,必须要自己转换
*/ let i = 10
let j = 8.5 //let k = i + j
let iNum = i + Int(j)
let dNum = Double(i) + j let size = CGSizeMake(100, 100)
let w = CGFloat(j) + size.width

02分支

//: Playground - noun: a place where people can play

import UIKit

var str = "Hello, playground"

let i = 50

/*:
1. 条件不需要括号
2. {} 不能省略
*/
if i > 20 {
print("OK")
} /*:
* OC 和 C 中非零即真
* swift 中逻辑值只有两个 true / false
*/
if i == 50 {
print("OK")
} // 三目,语法和 OC 基本一样
let b = i < 20 ? 10 : 80 /**
可选项(Optional) ?
表示变量可以有值,也可以没有值 * convenience init? 构造函数,? 表示不一定能够实例化出对象 * `!` 表示程序员告诉编译器对象一定有值,编译能够通过
* 如果运行时,没有值,就`崩溃`
*/ let url = NSURL(string: "http://www.baidu.com")
//如果不确定url 真的有值,增加一个 if
if url != nil {
let request = NSURLRequest(URL: url!)
} print(url) // 判断对象是否有值 - 增加了 if ,能够保证进入 {} 代码,url1 一定有值的
if let url1 = NSURL(string: "http://www.baidu.com/s?wd=zhang") {
let request = NSURLRequest(URL: url1)
}

03循环

//: Playground - noun: a place where people can play

import UIKit

for var i = 0; i < 10; i++ {
print(i)
} /*:
swift
* 0~9 其中 0..<10 不能有空格
*/
for i in 0..<10 {
print(i)
} // 0~10
for i in 0...10 {
print(i)
} // 不关心下标,可以使用 _ 省略
for _ in 0..<10 {
print("hello world")
}

04字符串

//: Playground - noun: a place where people can play

import UIKit

/*:
Swift 中使用 String 是一个结构体,效率会高,支持遍历
OC 的 NSString,是一个对象 * Swift 中,String 和 NSString 之间的转换很容易
*/ var str = "我要飞的更高" // swift 2.0 中遍历字符
for c in str.characters {
print(c)
} // 字符串拼接
let i = 1
let rect = CGRectMake(0, 0, 100, 100)
str = str + "\(i)" + "\(rect)" // 拼接字符串的时候,一定记住如果是可选项,要特别注意,带上 Optional
var x: Int?
x = 10
let str1 = "\(x!)" // 格式
let frmString = String(format: "%02d:%02d:%02d", arguments: [11, 1, 59]) /*:
如果使用 Range 的时候,最好用 NSString
*/
// 跟原来的字符串一模一样
var subStr = str.substringWithRange(Range<String.Index>(start: str.startIndex, end: str.endIndex))
print(subStr) // 从哪里开始,到哪里结束
subStr = str.substringWithRange(Range<String.Index>(start: advance(str.startIndex, 3), end: advance(str.startIndex, 6)))
print(subStr) let myStr: NSString = str
let myStr1 = str as NSString myStr.substringWithRange(NSMakeRange(0, 3))

05数组

import UIKit

var str = "Hello, playground"

/*:
数组定义 []
*/ let array = ["zhangsan", "lisi"] // 遍历
for str in array {
print(str)
} print(array[0])
print(array[1]) // 不能向不可变数组添加内容
//array.append("wangwu") /*:
可变 var 和 不可变 let * OC 中的数组,可以存放任意类型的对象
*/
// array1 的类型 [String],自动推导,只允许存放字符串
var array1 = ["xiaohua", "xiaocao"];
// array2 的类型 [NSObject],可以存放`任意对象`
// 在 swift 中,数字也可以直接当成对象存放在数组,不需要`转换`
var array2 = ["xiaohua", "xiaocao", 123];
array1.append("laozhang")
array2.append(100) /*:
数组的定义
*/
// array3 是一个仅允许存放字符串的数组,定义类型
var array3: [String] // 对 array3 进行实例化,在此之前,不允许操作
array3 = [String]() array3.append("laowang") // 数组的合并
array3 += array1 // 必须是相同类型的才能够合并
// 提示:在 swift 开发中,通常数组中保存的对象类型,都是一样的!
//array3 += array2 // 数组的删除
array3.removeAtIndex(2)
array3 array3 += array1
print(array3.count) // 清空数组 keepCapacity 是否保持容量
array3.removeAll(keepCapacity: false) // 添加内容
// 如果向数组中追加元素,超过了容量,会直接在现有容量基础上 * 2
// OC 实例化可变数组,最好指定容量
for i in 0..<16 {
array3.append("hello - \(i)")
print(array3[i])
print(array3.capacity) }

06字典

//: Playground - noun: a place where people can play

import UIKit

var str = "Hello, playground"

/*:
定义字典 [] let 不可变
var 可变
*/
// [String : NSObject] - 类型最常见
// JSON 的数据格式,key 是 String
// [key: value]
var dict = ["name": "张三", "age": 18]
dict // 如果 key 不存在,会新建
dict["title"] = "boss"
dict
// 如果 key 存在,会覆盖
dict["name"] = "lisi"
dict /*:
字典的遍历 k, v 可以随便写,前面是 key,后面是 value
*/
for (vv, kk) in dict {
print(vv + "--- \(kk)")
} /*:
合并字典
*/
// 1. 定义字典
var dict1: [String: NSObject]
dict1 = [String: NSObject]()
dict1["nickname"] = "老王"
dict1["age"] = 80 // 2. 合并-如果存在会覆盖,如果没有会新建
for (k, v) in dict1 {
dict[k] = v
} dict

07函数

import UIKit

var str = "Hello, playground"

//参数及返回值,取消了1.2中的#
func sum(num1 a: Int, num2 b: Int) -> Int{
return a+b
} sum(num1: 10, num2: 20) func prinnnnt(printtt a: Int) -> Void {
print(a)
} prinnnnt(printtt: 10)

Swift 2.0基本语法的更多相关文章

  1. swift 3.0基本数据语法

    swift 3.0 字符串的介绍 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"",Swift中字符 ...

  2. swift3.0基础语法

    swift 3.0 基础语法 目录 01-变量和常量 02-运算符 03-可选项 04-条件语句 05-循环 06-字符串 07-元组 08-数组 09-字典 10-对象和类 11-枚举 12-属性 ...

  3. iOS开发系列--Swift 3.0

    概述 从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行 ...

  4. Swift 3.0 【Swift 3.0 相较于 Swift 2.2 的变化】

    一.编译器和语法变化 函数或方法参数 调用函数或方法时从第一个参数开始就必须指定参数名 在Swift的历史版本中出现过在调用函数时不需要指定任何函数参数(或者从第二个参数开始指定参数名),在调用方法时 ...

  5. Swift 3.0 令人兴奋,但Objective-C也有小改进--Objective-C的类属性

    由于Swift 3.0 出了太多令人兴奋的新特性,人们很容易忽略 Objective-C中的小改动.或许你会觉得苹果提及Objective-C 很可能是为了提高和Swift互操作性(译者注:互操作性主 ...

  6. Swift 2.0初探

    转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心. 今年6月,一年一度的WWDC大会如期而至,在大会上Apple发布了Swift 2.0,引 ...

  7. 一起聊聊 Swift 3.0

    Swift3.0将会给我们带来哪些改变: 1. 稳定二进制接口(ABI) ABI是什么呢?API大家都知道是应用程序接口 API只是提供函数签名 而ABI是系统和语言层面的 如果ABI稳定 意味着以后 ...

  8. iOS开发——新特性OC篇&Swift 2.0新特性

    Swift 2.0新特性     转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...

  9. Swift 2.0初探:值得注意的新特性

    转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上A ...

随机推荐

  1. (4)ARP:地址解析协议

    一.简介 ARP为IP地址到对应的硬件地址之间提供动态映射.之所以称为动态是因为这个过程是自动完成的.一般应用程序用户或系统管理员不必关心.RARP是被那些没有磁盘驱动器的系统使用,它需要系统管理员进 ...

  2. RocketMQ入门(2)最佳实践

    转自:http://www.changeself.net/archives/rocketmq入门(2)最佳实践.html RocketMQ入门(2)最佳实践 一.服务端安装部署 我是在虚拟机中的Cen ...

  3. Linux 下 expect 脚本语言中交互处理常用命令

    Linux 下 expect 脚本语言中交互处理常用命令 1. #!/usr/bin/expect 告诉操作系统脚本里的代码使用那一个 shell 来执行.这里的 expect 其实和 Linux 下 ...

  4. HTML中标签和元素的区别

    作为一个前端,相信大家最先接触应该都是HTML吧?在HTML中很多人可能都没有把什么叫标签,什么叫元素这个概念搞清楚,为了把这个大家不曾留意的易混淆的搞清楚,特作此一文彻底解决掉这个问题! 首先我们来 ...

  5. Genymotion与本地电脑共享文件夹的方法

    首先打开vbox的界面,左侧列表应该可以看到Genymotion添加的虚拟机,如图:对要设置的虚拟机单击右键,在弹出的菜单中点击“设置...”,弹出设置页面后点击左侧最后一个标签“共享文件夹”,点击右 ...

  6. centos上安装jdk环境

    老沙采用的环境是centos 6.5 64位服务器.在linux上安装jdk环境都很多中方式,这里讲解下手工进行安装并进行环境变量配置. 首先需要下载一个64位版本的linux,可以去oracle官网 ...

  7. 详解Android ActionBar之一:ActionBar概述与创建

    前面一个系列中讲的是Fragment的内容,Android 3.0中除Fragment外,Action Bar同样也是一个很重要的知识点.我们经常使用Action Bar来替代传统的标题栏.如果是An ...

  8. iOS开发--混编篇&swift与OC混合使用

    Swift与OC混合使用 swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编. ...

  9. Templates

    Templates Templates are the site's markup, where images and js, css files are located as well as the ...

  10. javaBean为什么要实现Serializable接口?

    引用:http://jzinfo.javaeye.com/blog/519470 Java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成一组byte,这 ...