/*:
创建对象
* OC: alloc initWithXXX 方法
* Swift: (xxx:)
*/
/*:
调用方法
* OC: [UIColor redColor];
* Swift UIColor.redColor()
*/
/*:
枚举
* OC: UIButtonTypeContactAdd
* Swift: UIButtonType.ContactAdd
*/
//[[UIView alloc] init];
//[[UIView alloc] initWithFrame: ];
//let view = UIView()
let view = UIView(frame:CGRect(x: 0, y: 0, width: 100, height: 100))
view.backgroundColor = UIColor.redColor()
let btn = UIButton(type: UIButtonType.ContactAdd)
btn.center = view.center
view.addSubview(btn)
注释
与 C 语言多行注释不同,Swift 的多行注释可以嵌套在其它的多行注释之中嵌套多行注释
常量变量
常量定义格式
let number: Int = 10
//number = 20
定义变量格式
var number2: Int = 10
number2 = 20
类型推断
let number3 = 10
var number4 = 20.1
// 注意点: 如果没有指定表达式的类型, 也没有赋予初始值, 编译器会报错
var number5: Int
number5 = 88
类型安全
隐式转换
,如果要对不同类型的数据进行计算,必须显示类型转换 注意:
//let number6: Int = 10.1
let number7 = 10
let number8 = 10.1
//let sum = number7 + number8
let sum = Double(number7) + number8
let sum1 = number7 + Int(number8)
// 字面量之间运算可以是不同类型
let sum2 = 10 + 10.1
// CGFloat/Double
let point = CGPoint(x: 10.10, y: 20.20)
let temp = point.x
let sum3 = Double(temp) + number8
常量和变量的命名
注意:
//let ?? = "狗"
//let `Int` = 10
元祖
注意:
let tuples = (10, 10.1)
//: 通过下标
tuples.0
tuples.1
//: 指定元素名称
let tuples1 = (xxx: 99,ooo: 3.14)
tuples1.xxx
tuples1.ooo
//: 分解元素
let (intValue, doubleValue) = (998, 4.1)
intValue
doubleValue
let number = 10
if number == 10 {
print("等于10")
}
if number >= 10 && number <= 20 {
print("等于10")
}
Bool类型
typedef signed char BOOL;
非0即真Swift引入了真正的Bool类型true/false
三目运算符
提示:
注意:
let number1 = 10
let result = (number1 == 10) ? 10 : 0
分支Switch
注意: Swift中每一个 case 分支都必须包含至少一条语句, 不像 C 语言里的switch语句,在 Swift 中,switch语句不会同时匹配多个条件
switch(rank){
case "A":
case "B":
NSLog(@"还不错")
break
case "C":
NSLog("差")
break
}
let age = 18
switch age {
case 0:
print("刚出生")
case 18:
print("刚成年")
fallthrough
case 40:
print("一枝花")
var name = "lnj"
default:
print("other")
}
// 判断元祖
let point = (0, 50)
switch point {
case (0, 0):
print("原点")
case (50, 50):
print("中点")
case (100, 100):
print("右下角")
default:
print("other")
}
// 了解
switch point {
case let (x, y) where x == 0 && y == 0:
print(x)
print(y)
case let (x, y) where x == 50 && y == 50:
print(x)
print(y)
case let (x, y):
print(x)
print(y)
default:
print("other")
}
// 判断区间
// 闭区间 0...10 取值范围 0~10 包含头包含尾
// 半闭区间 0..<10 取值范围 0~9 包含头不包含尾
//let range = 0..<18
//let range = 18..<30
let range = 18...20
switch range {
// case 0..<18:
// print("未成年")
// case 18..<30:
// print("成年人")
// default:
// print("老炮")
case 0...17:
print("未成年")
case 18...30:
print("成年人")
default:
print("老炮")
}
let rank = "A"
switch rank {
// case "A":
// fallthrough
// case "B":
// print("还可以")
case "A", "B":
print("还可以")
case "C":
print("差")
default:
print("回家吧")
}
可选类型
如果你声明一个可选常量或者变量但是没有赋值,它们会自动被设置为nil
格式: Optional<类型> 或 在类型后面加上?号
可选类型的取值是一个枚举
Some 有值
由于可选类型在Swift中随处可见, 所以系统做了一个语法糖, 在类型后面加上? 注意:
var number: Optional<Int>
number = 10
number = nil
var number1: Int
number1 = 10
//number1 = nil
// 推荐
var number2: Double?
number2 = 20.1
//number2 = nil
// Swift中可选类型的值不能当做普通类型的值来使用
// 如果想使用可选类型的值必须进行解包操作
// 只需要在变量/常量后面加上! 就可以解包
// 解包代表着告诉系统, 该变量/常量中一定有值
var number3: Double
number3 = 3.14
print(number2)
print(number2!)
print(number3)
let sum = number2! + number3
强制解析(forced unwrapping)
let url = NSURL(string: "http://www.520it.com")
print(url)
//print(url!)
let url1 = NSURL(string: "http://www.520it.com/图片/abc.png")
print(url1)
可选绑定(optional binding)
提示:
注意:
if let temp = url {
print(temp)
}
let value1: Int? = 10
let value2: Int? = 20
let value3: Int? = 30
let value4: Int? = 40
if let temp1 = value1 {
if let temp2 = value2 {
if let temp3 = value3 {
if let temp4 = value4 {
let sum = temp1 + temp2 + temp3 + temp4
}
}
}
}
guard
func test(){
let value1: Int? = 10
let value2: Int? = 20
let value3: Int? = 30
let value4: Int? = 40
guard let temp1 = value1 else{
return
}
guard let temp2 = value2 else{
return
}
guard let temp3 = value3 else{
return
}
guard let temp4 = value4 else{
return
}
let sum = temp1 + temp2 + temp3 + temp4
print(sum)
}
test()
隐式解析可选类型(implicitly unwrapped optionals)
注意:
let intValue: Int?
intValue = 10
print(intValue)
print(intValue!)
if intValue != nil {
print(intValue!)
}
if let temp = intValue {
print(temp)
}
var doubleValue: Double!
doubleValue = nil
doubleValue = 3.14
print(doubleValue)
for循环-传统
不可以
省略for (var i = 0; i < 10; i++){
print(i)
}
for var i = 0; i < 10; i++ {
print(i)
}
for循环-Swift
for i in 0..<10 {
print(i)
}
//: while循环, 每次在循环开始时计算条件是否符合
var count = 0
while count < 10 {
print(count)
count++
}
count = 0
print(count)
//: repeat-while, 每次在循环结束时计算条件是否符合
repeat {
print(count)
count++
}while count < 10
print(count)
原文:http://www.cnblogs.com/l110/p/5143824.html