学习 Swift (基础)

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))

/******************************************************/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容