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

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

内容简介: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("

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

查看所有标签

猜你喜欢:

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

Single Page Web Applications

Single Page Web Applications

Michael Mikowski、Josh Powell / Manning Publications / 2013-9-30 / USD 44.99

Code for most web sites mostly runs on the server. When a user clicks on a link, the site reacts slowly because the browser sends information to the server and the server sends it back again before di......一起来看看 《Single Page Web Applications》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试