Swift开发入门-基础知识,附demo

栏目: Swift · 发布时间: 5年前

内容简介:Swift是一门新的语言,不过现在已经出到Swift4了,今天不介绍这些.很多人想学Swift,不知从何开始,今天我就简单说下入门知识,我认为在学习Swift之间最好先把这些基本的知识掌握了,才能更好的去认识它学习它,使用它.全是干货,并且附上demo:阅读顺序:

Swift是一门新的语言,不过现在已经出到Swift4了,今天不介绍这些.很多人想学Swift,不知从何开始,今天我就简单说下入门知识,我认为在学习Swift之间最好先把这些基本的知识掌握了,才能更好的去认识它学习它,使用它.

全是干货,并且附上demo: swift基础知识demo .

阅读顺序:

Swift开发入门-基础知识 .

Swift开发入门-进阶知识(一) .

Swift开发入门-进阶知识(二) .

下面的基本介绍,我建议大家认真读一读,尤其是从OC转过来的 程序员 一定要看一下,Swift是一门全新的语言,和OC的差别很大.

开始  ---   Swift   --- Coding

一、基本介绍

这里只介绍一些初学swift的基本概念,需要提前了解的东西

  1. Swift语法和OC不一样,OC每一行代码都是以分号";"结尾的,但是Swift结尾是没有结尾标识符的

  2. OC只要语法正确就可以,不用整理格式,但是Swift非常注重格式,比如 a = 3 ,在=的左右必须都有一个空格,或同时有多个,当=左右空格个数不一样时,比如 b= 2 这样会报错

  3. OC调用方式的时候是,是类名或对象名+空格+方法名,然后用中括号括起来:[Person saveCall]; Swift是类名或对象名+.+方法名即可: person.saveCall ,类似与OC的点语法

  4. Swift语法整体兼容OC,可以通过桥接和OC无缝对接

  5. Swift语法风格整体类似于Java

  6. 新建的Swift类,只有一个.swift文件,没有.h文件和.m文件

  7. Swift可以使用cocoapods,方法同OC一样

  8. 不需要导入头文件,可以直接引用其他类里面的方法或属性

  9. Swift没有宏这个概念

  10. Swift没有类扩展这个概念

  11. 没有main.m文件  @UIApplicationMain是程序入口标识

  12. class 标示声明类  {} 用来标识类的范围

  13. 构造函数 [xxx alloc] initWithXXX]  ==> xxx(XXX:) ;[alloc init] => ()

  14. UIButtonTypeContactAdd  => 枚举类型.枚举值(简写 .枚举值)

  15. 在当前类中访问属性或者方法的时候 可以省略 self. 推荐不写, 后面的闭包中必须添加self.

  16. 按钮的监听事件 使用 #selector

二、常见和变量

  let a = 10
  // a = 2   ----> 会报错 let定义的变量不能改变,不能进行赋值
  print(a)   // ---> 打印使用print语法,不适用NSlog
  var b = 20
  b = 30   //不会报错,var定义的变量是可以被修改的
        
  let c: Int = 10
  let d: CGFloat = 20.3
  /*
    swift是一个强类型的语言
    option + click 是swift开发的热键 没有之一
    Int 是swift中整数的默认类型(NSIbteger)
    小数默认类型是double
    let d: CGFloat = 20.3  这属于手动指定类型
 */        
        
  // let res1 = c + d   -->  会报错
    let res2 = c + Int(d)
    print(res2)   /*
    不同类型之间的运算
    swift中类型不一样的时候不能操作,没有银行形式的转换 需要coder手动转换数据
    转换类型: 通过类型调用构造函数 传递参数转换 ,或as语法
   */

三、 swift与OC的不同演示

  func scondDemo() {
        let myView = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))        //        myView.backgroundColor = UIColor.yellow
        myView.backgroundColor = #colorLiteral(red: 1, green: 0.3233583075, blue: 0.3979080506, alpha: 1)
        //color Literal属性
        
        let btn = UIButton(type: UIButtonType.custom)        //let btn1 = UIButton(type: .contactAdd)  可以简写 直接.+枚举
        myView.addSubview(btn)        
        //添加到根视图  --> 这里可以省略self,也可以写self.view  
        view.addSubview(myView)        
        //给按钮添加点击事件
        btn.addTarget(self, action: #selector(btnDidClick), for: .touchUpInside)
        
    }
    @objc func btnDidClick() {
        print("我被点击了")
    }

四、可选类型

可选类型将是我们在学习swift中的一个大雷,短时间内我们很难接受,这是一个全新的概念,是OC中没有的

  • 可选类型有可能有值,也有可能为nil

  • let声明可选类型是没有意义的

  • 必选类型一定有值

  var a:Int? = 10
   a = nil  //这就是一个可选类型
  //不能够对可选类型做强制解包
  var b: Int? = 15
  let c = (b ?? 0) + 20
  var d = 10
  let res = 20 + d
        
  print(res,(b ?? 0),c,d)  //可选类型不能够直接计算

你是否需要使用'?'或者'!'进行解包

-- '!' 强制解包 一定要获取一个值 不能够为nil

-- '?' 可选解包 后面具体说

-- 如果可选类型要进行计算的时候,系统会报错,需要程序员手动处理可选类型

-- '!' 强制解包有风险,需要谨慎使用,程序员需要对'!'负责  如果为nil 程序会崩溃

-- 一定要考虑是否安全 一定有值 防患于未然

-- '??' 合并空选项 必须提高 ?? 的优先级

五、分支结构

分支结构也就是if语句,和switch语句

分支结构 if语句

  1. 条件语句没有 () ,可以写 但不推荐写

  2. 分支结构必须有 {}

  3. 没有 非零即真的概念,只有 true 和 false

    let a = 13    if a < 14 { 
        print("小,很小,非常小")
    } else {        print("大,很大,非常大")
    }

if let

模拟网络请求

 let urlString = "http://www.zxhkit.com"
 let url = URL(string: urlString) if url != nil {     let req1 = URLRequest(url: url!)
 }        
 if let url2 = URL(string: urlString) {     let req2 = URLRequest(url: url2)
 }

guard(守卫) let else

作用与if let 相反 , guard let 能够减少一层分支嵌套

   let urlStr = "http://www.zxhkit.com"
   guard var url1 = URL(string: urlStr) else {       //不希望guard 能够被穿透
       //如果url1 为nil 就进入else 分支 会直接return
       return
   }   let req = URLRequest(url: url1)

guard 多个可选值的判断

   var age1: Int? = 15
   var age2: Int? = 20
        
   if age1 != nil && age2 == nil {
            
   }
        
   guard let ag1 = age1,let ag2 = age2 else {
       print("嘎嘎嘎")       return;
   }

switch

switch在swift中和OC中略有不同

  1. 不需要写break

  2. 每个匹配项中至少有一段代码可以执行

  3. 可以判断任意类型

  4. 一次可以匹配多个值

  5. 在匹配项中可以声明临时变量,而且不需要加 {} 限制作用域

    let x = "20000"
     switch x {     case "20000","30000":         print("架构师")     case "18000":         print("高级开发工程师")     case "12000":         print("中级开发工程师")     case "6000":         print("菜逼")     default:         print("逗比")
     }

六、循环

循环,基本没有变

    func fiveDemo() {
        // 循环的范围可以直接定义出来使用        let range = 0...10        for i in range {            print(i)
        }        print("----------------------")
        
        //遍历0到10,不加包括10,   0..<10 表示不包括10        for i in 0...10 {            print("i")
        }
        
        //对没有使用的变量或者常量在编译的时候可以忽略        for _ in 0..<10 {            print("

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

游戏测试精通

游戏测试精通

舒尔茨 / 周学毛 / 清华大学出版社 / 2007-9 / 48.00元

《游戏测试精通》来自3位在游戏测试领域都有着极其丰富经验的专业人员,是亚马逊“五星级”畅销书,也是国内第一本专业级游戏测试经典之作,不仅内容全面、实例丰富,而且讲解透彻、可读性强,并提供多个资源下载和技术支持站点。现如今,游戏产业发展迅猛,游戏测试已成为游戏产品、游戏软件、游戏程序设计与开发不可或缺的环节。《游戏测试精通》主要揭示了如何将软件测试的专业方法运用到游戏产业中,全面涵盖了游戏测试的基本......一起来看看 《游戏测试精通》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具