Swift 的基本语法

1.控制台输出

print("控制器输出代码")//print默认在后面添加\n

2.常量和变量

  • 1 定义常量用 let

    swift能够自动推断变量的类型,点击option可以查看。常量不能修改,如果需要修改用var修饰。
    let b = 10 //Int
    let b1 = 10.0 //Double
    let b2 = "" //String
    let b3 = true //Bool

  • 2 定义变量用 var

    变量的类型放到后面。需要注意的是:两个变量进行运算,必须类型一致。
    var a: Int = 10
    var a1: Float = 10
    var a2: Double = 20
    var a3: String = "Hello World"
    var a4: Bool = true//布尔值为ture和false
    //运算时类型转化
    var c = 20
    var d = 10.0
    var sum = Double(c) + d //Double
    var sum1 = c + Int(d) //Int

3.类型别名

  • 1.类型别名的定义,关键词typealias

      typealias AType = Int
      typealias CustomString = String
    
  • 2.使用
    let e: AType = 20
    let : CustomString = "ssss"//当定义的变量和常量没被用到时,系统建议你改成""

4.元组

let (x,y,w,h) = (10,10,50,60) //x=10,y=10,w=50,h=60
//打印
print(x,y,w,h)
print(x)

5.函数/方法

  • 1.对象方法

    定义:func 方法名字(参数名字1: 参数类型,参数名字2: 参数类型, ...) -> 返回值

    • 1.方法关键字:func 方法名字:funcMethod 参数:整数a,b 返回值->:两个Int类型
      func funcMethod(a: Int,b: Int) -> (Int, Int)
      {
      //返回两个数的和、差
      let sum = a + b
      let miute = a - b

          //返回一个元组
          return (sum,miute)
      }
      //调用方法,获取得一个元组
      let (s, m) = funcMethod(a: 20, b: 10)
      print(s)
      print(m)
      
    • 2.方法名字为method1,无参无返回值
      func method1()
      {

      }
      
    • 3.方法名字method2,有2个参数,无返回值。
      //3种创建方法:
      func method2( p1: Int, p2: String)
      {

      }
      func method3(withParamter1 p1: Int, paramter2 p2: String)
      {
      
      }
      
      func method4(_ p1: Int, _ p2: String)
      {
      
      }
      //方法调用
      method2(p1: 20, p2: "ssss")
      method3(withParamter1: 20, paramter2: "sssss")
      method4(20, "ssss")
      
  • 4.方法名字:method5 无参,有返回值
    func method5() -> Int
    {
    return 30
    }

  • 5.方法名字为method6,无参,有返回值,返回值为元组
    func method6() -> (Int, String)
    {
    return (20, "ss")
    }

  • 2.类方法

    定义:class func 方法名字(参数名字1: 参数类型,参数名字2: 参数类型, ...) -> 返回值

      //需加个关键词class,就可以啦。如:
      class func method6() -> (Int, String)
      {
          return (20, "ss")
      }
    

6.定义类和创建对象

//class表示定义类
class LoginViewController: UIViewController
{
    func testMethod()
    {
        print("testMethod触发")
    }

   class  func testMethod2()
    {
        print("testMethod2触发")
    }
}
//初始化控制器对象
var loginCtrl = LoginViewController()
loginCtrl.testMethod()//调用方法
LoginViewController.testMethod2()//调用类方法

7.异常处理

  • 1.自定义异常类型
    enum LoginError: Error
    {
    case usernamenull /用户名为空/
    case passwordnull /密码为空/
    }

  • 2.设定抛出异常函数

    throws 表示如果有错误就抛出异常

      func loginButtonClick(username: String , password: String) throws
      {
          //如果用户名为空
          if username.characters.count == 0
          {
              //本方法不解决,抛给调用该方法的方法去解决。
              throw LoginError.usernamenull
          }
          else if password.characters.count == 0
          {
              throw LoginError.passwordnull
          }
    
          //TODO::其它
      }
    
  • 3.捕捉异常

    do { try 有可能会出现异常的代码} catch{处理错误}

      do
      {
          try loginButtonClick(username: "xiaomign", password: "")
      }
      catch LoginError.usernamenull
      {
          print("用户名为空")
      }
      catch LoginError.passwordnull
      {
          print("密码为空")
      }
    
      //如:json解析这个方法有异常返回,所以需要处理异常。
      do {
         var dict =  try JSONSerialization.jsonObject(with: Data(), options: JSONSerialization.ReadingOptions.init(rawValue: 0))
      }
      catch
      {
          print("解析错误")
      }
    

8. 断言

断言使用格式:assert(条件语句, "注释说明")

var str = "11"
assert(str.characters.count > 0, "字符串长度不能为空")

9for循环

for i in 1...10  //1 <= x <= 10
{
    print(i)
}

for i in 1..<10  //1 <= x < 10
{
    print(i)
}

10.字符串

  • 1.定义一个字符串
    var string = "字符串"

  • 2.定义一个空字符串
    var string2 = String()

  • 3.字符串可变性
    var string3 = "hello "
    string3 += "world"
    print(string3)

      var string4 = "xiaoming"
      var string5 = "你好"
      var string6 = string4 + " " + string5
      print(string6)
    
  • 4.字符
    var char: Character = "A"
    var char2: Character = "你"

  • 5.字符串插入值
    var name = "小张"
    var age = 20
    var address = "黄岩岛"
    //拼成:小张 20 黄岩岛
    var result = name + " " + String(age) + " " + address
    print(result)

      var result2 = "\(name) \(age) \(address)"
      print(result2)
    
  • 6.计算字符串长度
    var length = result2.characters.count
    print(length)

  • 7.比较字符串
    var r: ComparisonResult = result.compare(result2)

      //注意:枚举前面的类型可以省略
      if r == .orderedAscending
      {
          print("升序")
      }
      else if r == .orderedDescending
      {
          print("降序")
      }
      else
      {
          print("相等")
      }
    
  • 8.前缀/后缀比较
    result.hasPrefix("s") //result是否以s开头
    result.hasSuffix("x") //result是否已为x后缀

11.if...else...

注意:if()else{}中,()可以省略,{}任何情况下都不能省略。

//语句1
if i == 0
{
    print("i == 0")
}
//语句2
if i == 0
{

}
else if i == 1
{

}
else
{

}

12.switch

  • 1.在switch里面,不用加break。

      switch i {
      case 0:
          print("i = 0")
      case 1:
          print("i = 1")
      case 2:
          print("i = 2")
      default:
          print("default")
      }
    
  • 2.switch匹配区间

      switch i
      {
      case 0...5:
          print("i大于等于0 小于等于5")
      case 6...10:
          print("i大于等于6 小于等于10")
      default:
          print("i大于10")
      }
    
  • 3.switch匹配元组

      let (x1, x2) = (10, 20)
      switch (x1, x2) {
      case (10, 20):
          print("x1 = 10, x2 = 20")
      default:
          print("other")
      }
    

13.for...in

let array = ["1","2","3"]
//遍历数据
for object in array
{
    print(object)
}

14.数组

  • 1.数组定义
    let arr: [String] = [] //数组里面没有数据,数组元素类型是String
    let arr2: Array<String> = []
    var arr3: Array<Int> = [1,2,4] //在swift3.0中,NSMutableArray,NSArray中可以存放基本类型
    let arr4: NSMutableArray = NSMutableArray()

  • 2.取值
    arr3[0]
    arr3.first //第一个元素
    arr3.last //最后一个元素

  • 3.添加元素
    arr3.append(5)

  • 4.根据索引删除元素
    arr3.remove(at: 0)
    print(arr3)

  • 5.删除所有的
    arr3.removeAll();

15.字典

  • 1.定义一个空字典
    var dic1: [String:String] = [:]
    var dic2: Dictionary<String, String> = [:]

      var dic3 = ["key1": "value1", "key2":"value2"]
    
  • 2.修改值
    dic3["key1"] = "xiaoming"

  • 3.添加键值对
    dic3["key3"] = "value3"

  • 4.把key3对于的值赋值为nil,但是键还存在
    dic3["key3"] = ""

  • 5.移除键值对
    dic3.removeValue(forKey: "key3")

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

推荐阅读更多精彩内容