Swift3.0从入门到放弃(一)

Swift初体验

Swift如何导入框架
#import UIKit // Swift中导入UIKit框架
#import <UIKit/UIKit.h> // OC中导入UIKit框架
Swift中定义标识符
OC当中定义标识符 : int a = 10;
Swift当中定义一个标识符,必须确定该标识符是一个常量还是一个变量
用let定义常量
用var定义变量
定义的格式 let/var 标识符名称 : 数据类型 = 赋值 
比如 : let/var name : String = "莉莉"
Swift中语句结束时分号问题
在Swift当中如果一行只有一条语句,那么在语句结束时可以不写分号;但一行当中有多条语句的时候,就必须用分号相隔。

Swift当中的常量和变量

在Swift当中定义标识符之前是必须确定常量或变量的
如 : let name : String = "路西"
     name = "大卫" // 错误的,常量在定义之后其值不能改变

     var age : Int = 12
     age = 15 // 可以的,变量的值可以任意改变 
Swift中常量变量使用注意
01. 在项目开发中,我们优先定义常量,当我们发现需要改变其值时,再修改成变量。
02. 若使用let定义一个对象时,虽然指针所指向的这个对象的内存地址不能改变,但是可以通过指针获得这个对象,然后改变对象内部属性的值。
如 : var testView : UIView = UIView()
     testView = UIView() // 这样是可以的,可以改变变量指向的内存地址

     let testView01 = UIView()
     testView01 = UIView() // 是错误的,常量不能改变所指向的内存地址
     testVaiew01.backgroundColor = UIColor.red // 这样是可以的,可以改变其对象中属性的值    

Swift创建对象案例及补充

案例 : 在一个view中添加一个button

import UIKit

// 设定View的尺寸
let viewRect : CGRect = CGRect(x: 100, y: 100, width: 100, height: 100)
// 初始化view
let testView : UIView = UIView(frame: viewRect)
// 设置背景颜色
testView.backgroundColor = UIColor.orange


// 创建button
let testBtn : UIButton = UIButton(type: .custom)
testBtn.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
testBtn.backgroundColor = UIColor.red
// 设置按钮文字
testBtn.setTitle("按钮", for: .normal)

/**
 注意 : Swift中的枚举,如果可以根据上下文推导出枚举的类型,可以直接写 .具体的类型;若推导不出来,就只能写成 枚举类型.具体的类型
   如 : testBtn.setTitle("按钮", for: .normal)
        testBtn.setTitle("按钮", for: UIControlState.normal)
 */

testView.addSubview(testBtn)

Swift中的类型推导

Swift是一门强类型语言,在定义常量or变量时必须确定其数据类型,但定义时若进行直接赋值,那么标识符后面写的数据类型课可以省略,因为在Swift中会自动根据后面的赋值推导出常量or变量的数据类型,可以按住option+鼠标左键查看常量or变量的数据类型.
let name01 : String = "莉莉"
let name02 = "莉莉"

Swift中的基本运算

Swift中是没有隐式类型推导的,所以在运算时要求所参与运算的数据类型必须一致,不一致的可以进行强制类型转换.
如 : let num1 : Int = 10
     let num2 : Double = 1.1
     //let result = num1 + num2 写法错误 无法运算
     let result = Double(num1) + num2 // 正确写法

Swift当中的逻辑分支

Swift中if语句的使用
回顾OC中if语句的使用,总结Swift中if的使用区别有两点
01. if语句后面跟的条件表达式小括号可以省略
02. if语句后面的条件表达式只接受true or false 类型,没有OC当中非0即为真和非空即为真的概念
03. if语句后面只有一条语句时,在OC当中可以省略大括号,但是在Swift当中不可以
例如 :
let score : Int = 59

if score > 100 || score < 0 {
    print("成绩错误")
} else if score >= 80 {
    print("优秀")
} else if score >= 60 && score < 80 {
    print("及格")
} else {
    print("不及格")
}
Swift中guard语句的使用
guard语句是Swift2.0推出的,是Swift当中特有的语法 基本格式如下 :
guard 判断语句 else {
    else中的执行语句
}
当判断语句为真的时候,跳过过大括号执行下面的语句,若判断语句为假时,执行else里面的语句

案例 : 判断能否上网
let age : Int = 18

// 判断是否可以上网
func isCanPlay(age : Int, money : Bool, isHaveCard : Bool) ->Bool {

    // 是否带了身份证
    guard isHaveCard else {
        return false
    }

    // 是否有钱
    guard money else {
        return false
    }

    // 是否满18岁
    guard age >= 18 else {
        return false
    }

    return true
}

// 开始判断
let result = isCanPlay(age: 18, money: true, isHaveCard: true)

if result {
    print("可以上网")
} else {
    print("回家吧")
}
Swift中Switch语句的使用
对比OC中的Switch语句,Swift当中对其进行了加强和改变.

01. 在Swift当中Switch后面可以省略小括号,可以省略break语句

02. 在Swift当中case语句后面可以跟多个判断条件
let jijie : Int = 3
// case语句后面可以跟N个判断,每个判断之间用逗号隔开
switch jijie {
case 1,2,3:
    print("春季")
case 4,5,6:
    print("夏季")
case 7,8,9:
    print("秋季")
case 10,11,12:
    print("冬季")
default:
    print("不合理月份")
}

03. 在Swift当中如果想实现case穿透效果,只需要手动添加fallthrough语句即可

04. 在Swift中Switch语句除了可以判断整型以外,还可以判断其他数据类型,比如可以判断浮点型、字符串、区间等

案例一 : 两个数进行加减乘除运算
let num1 : Double = 1.5
let num2 : Double = 9.9

// 可以根据字符串进行判断
// 两个数进行加减乘除运算
func calculate(num1 : Double, num2 : Double, oprationStr : String) ->Double {

    switch oprationStr {
    case "+" :
        return num1 + num2
    case "-" :
        return num1 - num2
    case "*" :
        return num1 * num2
    case "/" :
        return num1 / num2
    default:
        return Double(MAXFLOAT)
    }
}

var result = calculate(num1: num1, num2: num2, oprationStr: "*")
print(result)

案例二 : 区间判断成绩
// 在Swift当中有一个区间的概念,分为半开半闭区间和闭合区间
// 半开半闭区间 : 0..<10 代表 0~9
// 闭合区间 : 0...9 代表 0~9
// Swift中Switch语句也可以判断区间类型

let score : Double = 91

switch score {
case 0..<60:
    print("不及格")
case 60..<90:
    print("良")
case 90...100:
    print("优秀")
default:
    print("不合法分数")
}

Swift当中的循环使用

Swift当中的for循环
在OC当中的for循环基本格式
for (int i = 0;i < 10;i++){
}Swift2.0for循环的格式
for (var i = 0;i < 10;i++){
}Swift3.0for循环的格式(配合区间使用)
for i int 0..<10 {
}for i in 0...9 {
}

注意 : 在Swift当中如果一个变量没有被使用,可以用‘_’代替,避免不必要的内存占用,比如上面的i并又有使用,就可以用下滑线替代
for _ in 0...9 {
}
Swift中的while循环和do~while循环
01. 在Swift当中while循环和OC当中的基本一样,但是条件表达式可以省略小括号,只接收bool类型,和if语句的条件表达式写法一样
var num = 0
while num < 10 {
    num += 1
    print(num)
}

02. 在Swift当中do~while循环 改为 repeat~while循环
var num = 0
repeat {
    num += 1
    print(num)
} while num < 10

注意点 : 在Swift3.0中 禁用了自增自减运算符 i++ i-- 换为 i += 1 ; i -= 1

Swift当中的字符串

Swift当中字符串的定义
// 在Swift当中字符串是结构体类型,使用起来要比对象类型NSString性能好一些
// 定义不可变字符串
let str01 : String = "莉莉"

// 定义可变字符串
var strM01 : String = "莉莉"
strM01 = "路西"
var str : String = String()
str = "啦啦"
Swift中字符串长度
// 在Swift中获取字符串长度
let name : String = "曹航玮"
print(name.characters.count) // = 3 
Swift中字符串拼接
// 多个字符串拼接
let preUrl : String = "https://"
let hasUrl : String = "www.baidu.com"
// 拼接
print(preUrl + hasUrl)

// 字符串与其他类型进行拼接
let name : String = "曹航玮"
let score : Double = 99.9
print("\(name)的分数是\(score)")

// 字符串拼接中的格式化
let min : Int = 3
let sec : Int = 12
let time = String(format: "%02d : %02d", min, sec)
print(time)
Swift中字符串的截取
let url : String = "https://www.baidu.com"

// 方案一(通过转换为NSString类型来进行截取)
// 截取 https://
let subStr1 = (url as NSString).substring(to: 8)

// 截取 baidu
let range2 = NSRange(location: 12, length: 5)
let subStr2 = (url as NSString).substring(with: range2)

// 截取 .com
let subStr3 = (url as NSString).substring(from: range2.location + range2.length)

// 方案二(直接通过String就行截取)
// 截取 https://
let strIndex = url.index(url.startIndex, offsetBy: 8)
let subStr01 = url.substring(to: strIndex)

// 截取 baidu
let beginIndex = url.index(url.startIndex, offsetBy: 12)
let endIndex = url.index(url.startIndex, offsetBy: 17)
let range = Range(beginIndex..<endIndex)
let subStr02 = url.substring(with: range)

// 截取 .com
let fromIndex = url.index(url.endIndex, offsetBy: -4)
let subStr03 = url.substring(from: fromIndex)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值