一篇文章带你入门Swift
一篇文章带你入门Swift
- 一篇文章带你入门Swift
- ①、Swift 初学者第 1 部分:入门
- ②、Swift 初学者第 2 部分:变量和常量
- ③、Swift 初学者第 3 部分 - 类型
- ④、Swift 初学者第 4 部分 - 函数和参数
- ⑤、Swift 初学者第 5 部分 - 类和结构
- ⑥、Swift 初学者第 6 部分 - 循环
- ⑦、Swift 初学者第 7 部分 - 可选和展开
- ⑧、Swift 初学者第 8 部分 - if else 条件
- ⑨、Swift 初学者第 9 部分 - guard守卫语句
- ⑩、Swift 初学者第 10 部分 -枚举-Enums-Switch
- ⑪、Swift 初学者第 11 部分 - 协议-Protocols
- ⑫、Swift 初学者第 12 部分 -strong-weak
- ⑬、Swift 初学者第 13 部分 -闭包-Closures
- ⑭、Swift 初学者第 14 部分 - 字符串教程
- ⑮、Swift 初学者第 15 部分 - 数组和字典
- ⑯、Swift 初学者第 16 部分 - 整数、浮点数、双精度数
- ⑰、Swift 初学者第 17 部分 - 库和框架
- ⑱、Swift 初学者第 18 部分 - 命名约定
- ⑲、Swift 初学者第 19 部分 - 类型别名
- ⑳、Swift 初学者第 20 部分 - 三元运算符和返回语句
- ㉑、Swift 初学者第 21 部分 - 数学函数
- ㉒、Swift 初学者第 22 部分 - 搜索和排序
- ㉓、Swift 初学者第 23 部分 - 总结
①、Swift 初学者第 1 部分:入门
Swift for Beginners Part 1: Getting Started
内容
准备
- 苹果电脑
- 安装Xcode编译器
- playground的创建以及自动编辑功能
了解一下Playground
Playground
1. 使用Xcode打开并且创建一个Playground
2. 创建一个空面板的playground
3. 创建完playground之后 设置下面面板
长按可以调出下面效果
使用自动编译功能
playground会自动检测代码区
的输入 显示到显示区
②、Swift 初学者第 2 部分:变量和常量
Swift for Beginners Part 2: Variables & Constants
内容
- 变量 - 可以发生变化
- 常量 - 不可以改变的
- 静态变量 - 只会存储一次
// Variable , Constant, Static
// 变量 - 可以改变的
var str = "Hello World"
var x = 4
var y = 1
y = 2
// 常量 - 不可变的
let z = 3
//z = 13 // MyPlayground.playground:13:1: note: change 'let' to 'var' to make it mutable
// 静态常量
// 人类
class Person {
// 静态常量 只存在一次
static let age = 12
var lastName = "Simth"
}
var john = Person()
var Jen = Person()
var Bri = Person()
var Tim = Person()
③、Swift 初学者第 3 部分 - 类型
Swift for Beginners Part 3 - Types
Swift是有类型推导的
比如
- 隐性类型推导
let name = "Joe"
系统会自动检测 后面的类型 从而推导出来
name 是一个字符串类型
上面是一种隐性的类型推导
2. 指定型类型
let name : String = “Joe”
1. 查看类型使用
type(of: ???)
2. 类型的案例
// Types
// 类型
var x = 3 // integer
var name = "Joe" // String
// 类型推导
// swift能检测类型推导
type(of: x)
// 明确类型的变量 - 强类型
// 字符串类型
var lastName : String = "last"
// 整型
let age : Int = 22
// 浮点型
let price : Double = 1.99
var height : Float = 200.123123123123123123123
//lastName = 3 //不能将一个字符串改成整型
class Person {
}
//var john : Person = Person()
// Swift的类型推导
var john = Person()
let button1 : UIButton = UIButton()
var isComplete : Bool = false
isComplete = true
④、Swift 初学者第 4 部分 - 函数和参数
Swift for Beginners Part 4 - Functions & Parameters
函数和参数
什么是函数
函数是一组指令或一段代码1. 函数
- 无返回值
- 有返回值
- 有参数
演示代码 ④、Swift 初学者第 4 部分 - 函数和参数
import Foundation
// funcs and Parameters
func myFirestFunction() {
}
// 两个数相加
func addTwoNubers(a: Int,b: Int) -> Int {
let sum = a + b
// return a + b
return sum
}
// 平方
func squareNumber(number: Int) -> Int{
return number * number
}
func log(){}
// 是否为奇数
func isEven(number: Int) -> Bool {
if number % 2 == 0 {
return true
}
return false
}
var x = 3
var y = 7
let sum = addTwoNubers(a:x,b:y)
let squaredSum = squareNumber(number: 10)
log()
let reuslt = isEven(number: 10)
let reuslt2 = isEven(number: 11)
⑤、Swift 初学者第 5 部分 - 类和结构
Swift for Beginners Part 5 - Classes & Structs
类和结构
class
Structs
类是引用类型
结构是值类型
演示代码 ⑤、Swift 初学者第 5 部分 - 类和结构
import Foundation
// Swift是面向对象编程的
// 类是引用类型
// 结构是值类型
class Person {
}
// 建模的结构
//struct Car {
//
//}
// 车辆
class Vehicle {
}
struct Car {
let make : String
let color : String
// // 开车
// func drive(){
//
// }
// 初始化
init(color: String,make: String){
self.color = color
self.make = make
}
}
var bmw : Car = Car(color: "blue", make: "bmw")
var car2 : Car = Car(color: "red", make: "honda")
⑥、Swift 初学者第 6 部分 - 循环
Swift for Beginners Part 6 - Loops
遍历一个特定的操作多次任务
for、while
演示代码 ⑥、Swift 初学者第 6 部分 - 循环
// Loops
// 循环
// 遍历一个特定的操作多次任务
// 将1、2、3、4、5、6数字 分别乘以 2
// for
let numbers = [1,2,3,4,5,6]
print("test") // 打印
// for
for thing in numbers {
let result = thing * 2
print(result)
}
// while
var x = 0
while x <= 3 {
print(x)
// 防止死循环
x += 1
}
⑦、Swift 初学者第 7 部分 - 可选和展开
Swift for Beginners Part 7 - Optionals & Unwrapping
可选项以及解包
演示代码 ⑦、Swift 初学者第 7 部分 - 可选和展开
import Foundation
// Optionals
// 可选项
// Swift是强类型语言
var name : String? = "Joe"
name = nil // error: 'nil' cannot be assigned to type 'String' 需要在name : String添加? 解除错误
var x: Int? = 3
var y: Int? = 12
//var result = x + y // x 和 y 是 可选项的 所以我们需要展开 也就是解开可选
if let value = x {
print("has value")
if let value2 = y {
let result = value + value2
print(result)
}
}
// 价格
var price: Double? = nil
print(price)
price = 1.23
print(price) // 打印出来的是可选类型
type(of: price) // Optional<Double>.Type
⑧、Swift 初学者第 8 部分 - if else 条件
Swift for Beginners Part 8 - If Else Conditionals
if else 判断语句的使用
演示代码 ⑧、Swift 初学者第 8 部分 - if else 条件
//Conditionals
// 条件
var x = 12
if x > 10 {
} else if x > 20 {
} else {
// something else
}
var z: Int? = nil
// if let realNumber = z 相当于可选检测
if let realNumber = z {
// x = nil 永远不会进来
// use vlaue in here
}
if x % 2 == 0 {
print(x)
}
var a = 1
var b = 12
// || 或者
// && 并且
if a > 10 || a < 200 {
}
// if a > 10 && a < 200
if a > 10 {
if x < 200 {
// 执行到这里相当于
// 等同 if a > 10 && a < 200
}
}
⑨、Swift 初学者第 9 部分 - guard守卫语句
Swift for Beginners Part 9 - Guard Statements
Guard语句的使用
演示代码 ⑨、Swift 初学者第 9 部分 - guard守卫语句
import Foundation
// guard
// 判断数字是否大于5
func numberLargerThanFive(number: Int) -> Bool {
// if number < 5 {
// return false
// }
// return true
// 如果 number > 5 往下执行 不会执行guard里面的语句
// 如果 number < 5 就会执行 guard里面的语句
guard number > 5 , number > 4 else {return false}
return true
}
// 比如登录的时候 需要检测用户输入的手机号 或者密码进行效验
var text : String?
//text = "hello world"
if let vlaue = text {
print(vlaue)
}
// 使用guard进行效验并且打印
func printValue(){
guard let vlaue = text else {return}
print("guard-\(vlaue)")
}
printValue()
⑩、Swift 初学者第 10 部分 -枚举-Enums-Switch
Swift for Beginners Part 10 - Enums & Switch Statements
枚举的定义
Switch的使用
演示代码 ⑩、Swift 初学者第 10 部分 -枚举-Enums-Switch
import Foundation
import UIKit
// Enums and SWitch statements
// 枚举 是数据结构的一种方式
enum States {
//enum States : String {
case InProgress // 进行中
case Aborted // 终止
case Complete // 完成
case willStart // 将要开始
// case InProgress = "1" // 进行中
// case Aborted // 终止
// case Complete // 完成
// case willStart // 将要开始
// case aborted = "2" // 终止
// case Complete = "3" // 完成
// case willStart = "4" // 将要开始
// case InProgress, Aborted ,Complete , willStart // 简写
}
let state = States.InProgress
func checkState(){
switch state{
case .InProgress:
// show info form
print("state - InProgress")
break
case.Aborted:
break
case.Complete:
break
case.willStart:
break
}
}
checkState()
//var currentState = "Complete"
var current : States
current = .InProgress
var color : UIColor?
color = UIColor.red
⑪、Swift 初学者第 11 部分 - 协议-Protocols
Swift for Beginners Part 11 - Protocols
协议的定义
协议的使用
演示代码 ⑪、Swift 初学者第 11 部分 - 协议-Protocols
import Foundation
// Protocols
// 一旦一个拥有了协议 那么这个类就要遵循这个协议
//protocol CarProto {
// 数据源 一般是跟数据相关
// delegate 一般是跟用户交互相关
protocol CarDataSource {
var color: String { get set }
// 只是声明函数
func drive()
// 是否为全轮驱动
func isAllWheelDrive() -> Bool
}
class Car {
}
class BMW : Car,CarDataSource {
var color: String = ""
func drive() {
}
func isAllWheelDrive() -> Bool {
return true
}
//
init(color : String){
self.color = color
}
}
⑫、Swift 初学者第 12 部分 -strong-weak
Swift for Beginners Part 12 - Strong vs Weak Memory
强引用 和 弱引用的使用
演示代码 ⑫、Swift 初学者第 12 部分 -strong-weak
import Foundation
// Strong vs weak
// 强引用 和 弱引用
//weak var wstr = "dasdaasddjask"
// 默认情况是强引用
var str = "dasdaasddjask"
// 小孩牵气球案例
// 孩子存在 气球可以存在 或者不存在
// 孩子不存在 气球必定不存在 气球必须是弱引用 可有可无
class Child {
weak var balloon = "str"
}
var joe = Child()
⑬、Swift 初学者第 13 部分 -闭包-Closures
Swift for Beginners Part 13 - Closures
闭包的基本使用
演示代码 ⑬、Swift 初学者第 13 部分 -闭包-Closures
import Foundation
// Closures / lambda
// 函数调用
func isGreaterThanThree(number: Int) -> Bool {
if number > 3 {
return true
}
return false
}
// 接受一个int类型 并且返回一个bool结果
//var myFunction: ((Int) -> (Bool)) = {
// number in
// if number > 3 {
// return true
// }
// return false
//}
//myFunction(4)
// 闭包调用
let myFunction: ((Int,Int) -> (Bool)) = {
number,number2 in
if number > 3 {
return true
}
return false
}
let result = myFunction(2,3)
let res2 = isGreaterThanThree(number: 4)
⑭、Swift 初学者第 14 部分 - 字符串教程
Swift for Beginners Part 14 - Strings tutorial
字符串的声明、判断字符串是否有值、字符串的拼接、字符串的长度
演示代码 ⑭、Swift 初学者第 14 部分 - 字符串教程
import Foundation
// Strings
// 字符串
var setve : String? = "setve Jobs"
if let name = setve {
print(name)
}
var first = "Setve"
var last = "Jobs"
var number = 1
// 字符串拼接
var fullname = "my name is \(first) \(last) and I am number is \(number)"
print(fullname)
let length = fullname.count
print(fullname)
var nums = [10, 20, 30, 40, 50]
// 用给定的集合替换指定的元素子范围。
nums.replaceSubrange(1...3, with: repeatElement(1, count: 5))
print(nums)
// Prints "[10, 1, 1, 1, 1, 1, 50]"
⑮、Swift 初学者第 15 部分 - 数组和字典
Swift for Beginners Part 15 - Arrays & Dictionaries
数组 和 字典的定义 以及使用
演示代码 ⑮、Swift 初学者第 15 部分 - 数组和字典
import Foundation
// Arrays and Dictionaries
// 数组 和 字典
// 数组
var names : [String] = ["Joe","John","Jacob"]
var numbers : [Int] = [1,2,3]
// 任何类型的数组
var Anytypes: [Any] = [1,2,3,"Joe","John","Jacob",1.22]
for number in numbers {
print(number)
}
// 字典
// 键值
var cars : [String: Int] = ["bwm":3,"Honda":1,"Lexus":12]
for (key,value) in cars {
print(key)
// print(value)
}
⑯、Swift 初学者第 16 部分 - 整数、浮点数、双精度数
Swift for Beginners Part 15 - Arrays & Dictionaries
如何声明 整型、浮点型、双精度
如果将两个不同类型进行转换
演示代码 ⑯、Swift 初学者第 16 部分 - 整数、浮点数、双精度数
// numbers
var a : Int? = 1 // Int
var b : Double? = 1.00 // double
var c : Float? = 1.000000000001 // float
//类型不一致 的相加
//var result = a! + Int(b!)
// 或者修改另外一个变量
var result = Double(a!) + b!
if let vlaue = b {
print(vlaue)
}
⑰、Swift 初学者第 17 部分 - 库和框架
Swift for Beginners Part 17 - Libraries & Frameworks
第三方库 是别人基于系统的框架 进行开发封装而成的
框架 也就是系统的框架/库
演示代码 ⑰、Swift 初学者第 17 部分 - 库和框架
import Foundation
// Libraries-Frameworks
// 库 框架
// 系统的框架
import StoreKit
// UI工具包
import UIKit
// 第三方库 比如 Google广告
// AdMob
//import GoogleMobileAds
let button = UIButton()
⑱、Swift 初学者第 18 部分 - 命名约定
Swift for Beginners Part 18 - Naming Conventions
代码的风格样式
演示代码 ⑱、Swift 初学者第 18 部分 - 命名约定
import Foundation
// 变量
// 下划线
var number_of_bank_accounts = ""
// 驼峰
var numberOfBankAccounts = ""
// 函数
func is_larger_than_five(){}
func isLargerThanFive(){}
// 类
class BigPerson {
let name = ""
}
var joe = BigPerson()
⑲、Swift 初学者第 19 部分 - 类型别名
Swift for Beginners Part 18 - Naming Conventions
通过一个指定类型的字符串来 说明 类型别名是如何使用的
演示代码 ⑲、Swift 初学者第 19 部分 - 类型别名
import Foundation
// Typealias
// 类型别名
//var code : String = ""
//
typealias Code = String
var code : Code = ""
// 验证代码 - 字符串
//func validateCode(code: String) {
func validateCode(code: Code) {
print("验证代码")
}
validateCode(code: code)
// 验证地址 - 字典
//var address : [String : String] = ["" : ""]
typealias Address = [String : String]
var address : Address = ["":""]
//func validateAddress(address: [String : String]) {
func validateAddress(address: Address) {
print("验证地址")
}
validateAddress(address: address)
//验证方法 - 闭包
// 接受一个字符串参数 返回一个bool类型 通过闭包回调
//var validateFunction: ((String)-> (Bool)) ?
// 使用 Typealias
// 促销码验证功能
typealias PromoCodeValidationFunction = ((String)-> (Bool))?
var validateFunction : PromoCodeValidationFunction = { code in
if code == "123" {
return true
}
return false
}
//var validateFunction1 : PromoCodeValidationFunction
//
//var validateFunction2 : PromoCodeValidationFunction
//
//var validateFunction3 : PromoCodeValidationFunction
func yhdidEnterCode(code: String) {
let result = validateFunction?(code)
print(result)
}
yhdidEnterCode(code: "124")
⑳、Swift 初学者第 20 部分 - 三元运算符和返回语句
Swift for Beginners Part 20 - Ternary Operator & Return Statement
通过一个案例 判断一个数是否大于5 讲解三元运算符是什么
演示代码 ⑳、Swift 初学者第 20 部分 - 三元运算符和返回语句
import Foundation
// 是否大于5的函数
func isBiggerThanFive(number: Int) -> Bool {
// 三目运算符
// 是否大于5 如果大于5 返回 true 否则返回false
if result = number > 5 ? true : false
return result
// if number > 5 {
// return true
// }
// else
// {
// return false
// }
}
func randomNumber() -> Int{
let x = 5
// return x > 3 ? 12 : 2
let result = x > 3 ? 12 : 2
return result
}
㉑、Swift 初学者第 21 部分 - 数学函数
Swift for Beginners Part 21 - Math Functions
通过代码演示 数学的加减乘除
演示代码 ㉑、Swift 初学者第 21 部分 - 数学函数
import Foundation
var x = 3
var y = 2
//var y = 2.123
var result = x + y
var result1 = x - y
var result2 = x / y
var result3 = x * y
var a = 30
var b = 10
// 4 * 7 = 28 余数2
var resultab = a % b
if resultab == 0 {
print("整除")
}
else {
print("不能整除 \(resultab)")
}
㉒、Swift 初学者第 22 部分 - 搜索和排序
Swift for Beginners Part 22 - Searching & Sorting
遍历一个数组
演示代码 ㉒、Swift 初学者第 22 部分 - 搜索和排序
import Foundation
import Darwin
// Searching & Sorting
// 搜索和排序
var numbers = [1,2,3,4,5,6,7,12,13,3,5]
// 通过一个函数 查找数字是否存在数组里面
func isNumberInArray(number: Int,array: [Int]) -> Bool {
// for in 循环
for x in array {
if x == number {
return true
}
}
return false
}
let result = isNumberInArray(number:8,array:numbers)
print(result)
㉓、Swift 初学者第 23 部分 - 总结
Swift for Beginners Part 23 - Wrapping Up
使用类、继承、协议 说明一下社区的例子
演示代码 ㉓、Swift 初学者第 23 部分 - 总结
import Foundation
// summary
// 地址数据源
protocol AddressDataSource {
func myAddress() -> String
}
// 小区
class Neighborhood {
let homes : [Home] = []
}
// 房屋
class Home : AddressDataSource {
let rooms: [Room] = []
func myAddress() -> String {
return "123 Main Serett"
}
}
// 房间
class Room {
var color = "blue"
var width : Int = 12
var length : Double = 32.5
init(){
self.width = 12
self.length = 32.5
}
let area : Int = width * Int(length)
func getArea() -> Int {
guard let vlaue = area else { return 0 }
return vlaue
}
// 房间是否在二楼
func isOnSecondFloor() -> Bool {
return false
}
}