importUIKit
/*
输出
OC:NSLog(@"Hello, World!");
Swift:print("Hello, World!")
*/
print("Hello, World!")
//常量&变量的使用原则:尽量先用let,只有需要变的时候,再用var,能够更加安全
//定义变量
vari =10
print(i)
i=15
print(i)
//定义常量
letj =20
//常量一经定义不能自改数值
//j = 25
print(j)
/******************************************************/
//变量类型
letnum =10
print(num)
//自动类型推导NSArray *arr = [NSMutalbeArray array];
letvalue =10.10
print(value)
//指定类型
letdValue:Double=10.1
print(dValue)
/*
在Swift中值"永远不会"被隐式转换为其他类型,必须显示转换
Swift中整数默认是Int64== long
Swift中小数默认是Double
*/
letsum =Double(num) +value
print(sum)
letsize =CGSize(width:10, height:10)
// Double和CGFloat也需要转换
letres =size.width+CGFloat(dValue)
/******************************************************/
/*
创建对象
OC:alloc initWithXXX方法
Swift:(xxx:)
调用方法
OC:[UIColor redColor];
SwiftUIColor.redColor()
枚举
OC:UIButtonTypeContactAdd
Swift:UIButtonType.ContactAdd
*/
letview =UIView(frame:CGRectMake(0,0,100,100))
view.backgroundColor=UIColor.redColor()
letbtn =UIButton(type:UIButtonType.ContactAdd)
btn.center=CGPoint(x:50, y:50)
view.addSubview(btn)
/******************************************************/
/*
1.条件不需要加圆括号
2.{}不能省略
*/
letintValue =10
ifintValue>5{
print("OK")
}
/*
1.Swift中没有C和OC中非零即真的概念
2.Swfit中逻辑值只有两个true/false
*/
ifintValue==10{
print(intValue)
}
/*
三目运算符和OC中的一样
提示: Swift中三目运算符用得很多
*/
letresult =intValue>20?20:10
/******************************************************/
/*
可选类型(Optional) ?
>表示变量可以有值,也可以没有值
>convenience init?构造函数, ?表示不一定能够实例化出对象
>!表示告诉编译器一定有值,编译能够通过,如果运行时没有值就会直接崩溃
>提示: ?和!是所有刚刚接触Swift的OC程序员最蛋疼的问题,前期开发要注意多看文档和利用编译器提示解决
*/
leturl =NSURL(string:"http://www.baidu.com/")
leturl2 =NSURL(string:"http://www.baidu.com/mike")
//需要考虑url是否有值
ifurl!=nil{
letrequest =NSURLRequest(URL:url!)
}
//不需要考虑url是否有值,能进入{}一定有值
ifleturl3 =NSURL(string:"http://www.baidu.com/"){
letrequest =NSURLRequest(URL: url3)
}
/******************************************************/
/*
传统写法:
>不需要()
>i没有类型,使用的是var
*/
forvari =0; i <10; i++
{
print(i)
}
/*
Swift
> 0~9之间,其中0..<中间不能有空格
> Swift1.0版本0..10
*/
foriin0..<10
{
print(i)
}
// 0~10
foriin0...10
{
print(i)
}
//不关心下标可以使用_省略
//在Swift中_使用非常广泛
for_in0...10
{
print("Coffee")
}
// while循环
varn =0
whilen<10
{
print(n)
n++
}
// do while
varm =0
repeat{
print(m)
m++
}whilem<10
/******************************************************/
//定义数组
letarray = ["Coffee","Mike"]
//遍历
forarrinarray{
print(arr)
}
//获取元素
array[0]
array[1]
//添加元素
//不能像不可变数组中添加内容
//array.append("why")
// let不可变对象, var可变对象
vararrayM = ["Coffee","Mike"]
arrayM.append("why")
//在Swift开发中数组可以存放任意类型
vararrayM2 = ["Coffee","Mike",123]
arrayM2.append("456")
//合并数组
vararrayM3 = ["zs","ls","ww","zl"]
arrayM+=arrayM3
//只有相同类型的数组才可以合并
//arrayM2 += arrayM3
//删除
arrayM3.removeAtIndex(1)
arrayM3
//删除所有
//arrayM3.removeAll()
//删除并保留容量
arrayM3.removeAll(keepCapacity:true)
arrayM3.capacity
arrayM3.append("1")
arrayM3.capacity
arrayM3.append("2")
arrayM3.capacity
arrayM3.append("3")
arrayM3.capacity
arrayM3.append("4")
arrayM3.capacity
arrayM3.append("5")
//超过容量,容量会直接*2
arrayM3.capacity
//初始化
vararrayM4: [String]
arrayM4= [String]()
//数组没有初始化之前不允许做任何操作
arrayM4.append("Coffee")
/******************************************************/
//定义字典
//最常见的字典类型[String : NSObject],例如JSON
vardict = ["name":"Coffee","age":30]
//遍历字典
// k,v可以随便写,前面是key后面是value
for(k, v)indict{
print(k)
print(v)
}
//获取元素
dict["name"]
//添加元素
//如果key不存在会新增
dict["gender"] ="man"
dict
//替换元素
//如果key存在会替换
dict["name"] ="why"
//删除元素
dict.removeValueForKey("name")
dict
//合并字典
vardict2 = ["score":123]
for(k, v)indict2{
dict[k] = v
}
dict
//初始化
vardict3: [String:NSObject]
dict3= [String:NSObject]()
dict3["name"] ="Coffee"
dict3
/******************************************************/
/*
Swift中使用String是一个结构体,效率更高,支持遍历
OC中是一个对象
Swift中的String和OC中的NSString可以很方便的进行转换
*/
varstr ="你很帅"
forcinstr.characters
{
print(c)
}
//字符串拼接
varstr2 ="cool"
str2+=str
letage =30
letname ="Coffee"
letstr3 ="name =\(name), age =\(age)"
letfrmStr =String(format:"%02d:%02d:%02d", arguments: [9,23,8])
//字符串截取,建议使用NSString
letstr4 ="xmgcool"
letnsStr:NSString=str4
letsubStr =nsStr.substringWithRange(NSMakeRange(0,3))
letnsStr2 =str4asNSString
letsubStr2 =nsStr.substringWithRange(NSMakeRange(1,3))
/******************************************************/
/*
格式:
func函数名称(参数列表) ->返回值
语义:将前面的计算结果,输出给后面的返回值
*/
//没有参数没有返回值
/*
1.可以写为->Void
2.可以写为->()
3.可以省略
*/
funcsay() ->Void{
print("Coffee")
}
say()
funcsay2() -> (){
print("Coffee")
}
say2()
funcsay3(){
print("Coffee")
}
say3()
//有参数没有返回值
funcsum(a:Int, b:Int){
print(a + b)
}
sum(10, b:20)
funcsumm(a:Int,_b:Int){
print(a + b)
}
summ(10,20)
// xy外部参数, ab内部参数
// Swift2.0以前可以写#
funcsum2(x a:Int, y b:Int){
print(a + b)
}
sum2(x:10, y:20)
//没有参数有返回值
funcgetNumer() ->Int{
return998
}
print(getNumer())
//有参数有返回值
funcsum3(a:Int, b:Int) ->Int{
returna + b
}
print(sum3(10, b:20))
/******************************************************/