学习Swift第一步,为什么要学习Swift

最近随着苹果的春季发布会到来,iOS9.3系统的更新,Swift2.2的更新也随之到来,Swift自发行以来,就伴随着很多评价,简介,方便开发,完全免费,开源,综合C,OC,Java等多门语言的优劣筛选产生的一门计算机语言。

如今Swift语言从发行至今也有近两年时间,在两年里也在不断的完善,更新,而且当下也有不少软件是通过纯Swift语言来编写的,而且他有一个很大的好处就是开源,对于程序员来说这个好处绝对是最有诱惑力的,为什么git能有这么多程序员的支持,就是因为他给了一个代码平台,让大家的代码开源从别人那里学到知识。同时它既严谨又开放,有自己的原则,同时使用起来也非常的灵活。

在这里我也是分享一下最近接触并学习Swift语言的一些知识。

先分享两个好的学习网站慕课网 极客学院

首先说下Swift和OC的区别,在工程上OC是分为.h和.m文件的,一个声明文件,一个实现文件,而在Swift工程中只有一个文件,就是.Swift文件,声明,导入文件都在这一个文件夹里来操作的。导入 不需要再到类名 所有类名都是公开的 可以直接访问到
导入框架: 直接导入框架名 如 import UIKit
OC程序入口是main函数
swift代码是从上往下执行 @UIApplicationMain 程序的入口
class 是用来声明类的 class后面是类名 冒号后面是继承的父类
导入协议或者代理的时候直接在父类的后面加逗号和代理或协议的名字。
例如

class AppDelegate: UIResponder, UIApplicationDelegate{
}

另外如果我们要声明一个变量,在OC里面都是类名 对象名,然后进行复制,在Swift中所有的变量都用var来定义,所有的常量都用let定义,公式为

var 名字 :数据类型 =值

值得一提的是,Swift中是支持中文编码格式的,甚至你还可以把对象名命名为表情,比如

    let 🐶:String = "hello world"
    print(🐶 + "可以和海绵宝宝做朋友吗")
//Swift中可以直接用+来拼接字符串

这就是说为什么这门语言很开放,但是我们如果这样写

    let 🐶:NSString = "hello world"
    print(🐶 + "可以和海绵宝宝做朋友吗")

他就会说,🐶的类型和"内容"类型不同,不能进行拼接,你必须把它转化成String类型才能进行拼接,在Swift中类型一定要精确,否则他就会提示报错,而且,写法一定要正规,多一个空格少一个空格他都会给你莫名的报错。

另外在Swift中一段代码的结束可以不用;结尾,但是一行如果有多句代码要用;来隔开,其实加上也是不会报错的。

还有一点Swift因为现在还不算太完善,如果你在声明一个变量的时候,在后面并没有改变他的值,他会提醒你,你可以赋值为常量,但是不要管他,也不会有错误的。

在Swift中还有一点很神奇的地方就是,它可以自行推断数据类型,这在其他所有语言中都是有违背常理的,一个数据的产生必定要随之伴随着他的类型,但是在Swift中它却可以自行推断数据类型来进行判断,因为在Swift中加入了几种新的判断,例如可选数据类型,明确数据类型,判断数据类型,就是说你在定义一个数据的时候他还没有明确的去使用,也可以选择它的数据类型,所以在这点Swift还是很严谨的

let 字符串 = "我是字符串"
print(字符串)
let 年龄 = 12
print(年龄)

我们可以这样证实一下是不是确实可以自行推断数据类型

如果声明变量的时候不想在声明的时候去赋值 必须填上变量的数据类型 什么都没给他 没有推断的依据 推断不出

然后我们说一下Swift中方法的声明和调用
就拿一个APPDelegate里面函数来说明吧

swift:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
return true
}
OC:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    return YES;
}

比较一下Swift里面声明都是用func来声明,后面是方法名,接着是一个小括号,无参数就不填内容,有参数就填写参数类型,顺带提一下Swift里面打mark标记也不同,直接使用//MARK:标题内容来标记,有一点,在Swift中是没有BOOL类型的,他是纯粹的Bool类型,既,是或者非,没有1,0,YES NO这一说,所以return得都是true或者false

func 方法名 (){
    print("无返回值不带餐的函数")
}


//MARK:无返回值  代餐
func 有参方法(参数名:NSString)  {
print("你好,我是有残方法")
}

//MARK:带参有返回值

func 有参有返回方法(参数名1:String , 参数名2:String) -> String {
return 参数名1 + 参数名2
    
}

无视那些卖萌的错别字=。=虽然可以用汉语,但是并不提倡这一点,大家定义的时候尽量还是用英文命名。。逼格也高一些。。

然后在程序中调用一下,调用的时候直接是方法名(参数)

    var 参数:NSString = "🐶"
    有参方法(参数)
    print(有参有返回方法("123", 参数名2:"12344" ))

要注意的是如果你要调用其他类的方法的时候要用.来调用,比如我创建一个UIView的类,在里面写了个叫视图方法的方法,需要传一个字符串的参数进去,那么我调用的时候。

 //快捷创建对象
 //        创建带有frame的
 //        let view:MyView = MyView(frame:CGRectMake(123,123,123,123))
    let view:MyView = MyView()
    
    view.frame = CGRectMake(123, 123, 123, 123);
    view.backgroundColor = UIColor .redColor()
    print(view .视图方法("字符串参数"))

    self.view .addSubview(view)

还有一点,在Swift中是提倡使用区间来定义范围的,在Swift中有全闭合区间,和半闭合区间之分,全闭合即包括区间内所有元素,半闭合区间是由第一个元素到倒数第二个元素。定义的方式也不同
1 2 3 4 5
全闭合区间 1...5//三个点
1 2 3 4 (5)
半闭合区间 1..5//两个点
在Swift中是提倡使用区间来定义的

let titles = ["标题1" , "标题2" , "标题3"]
for (var i = 0;i < titles.cout; i += 1){
            vc.title = titles[i]
    }

还有一点,Xode7.3之后 ++将在swift3中弃用 改成+=
在做数据类型转换的时候
swift 不同的数据类型 不允许计算
数据类型转换 数据类型(要转换的变量名)

在遍历的时候大家注意,这点我在学习的时候差点报警,在判断的时候,比如i < 5,如果i和<中间有空格,则右侧也要有空格,如果没有,就都不要有,不然就会报错,写法一定要严谨,最好都加上空格,看起来也清晰,另外for循环的条件可以不用加括号,当然加上也没有错误,这点我当时真的是要报警了

暂时先写这么多,前面网站里面都会有相应的视频,老师也都很不错。在这里主要写一些容易遇到的错误等,有空再来写一下选择类型。

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

推荐阅读更多精彩内容