【一篇文章带你入门Swift】、变量-常量、for语句、函数、类-结构、可选-解包、ifelse、guard语句、枚举Switch、协议、strong和weak、闭包、字符串、数组、字典、三元运算符

一篇文章带你入门Swift

请添加图片描述

一篇文章带你入门Swift

①、Swift 初学者第 1 部分:入门

Swift for Beginners Part 1: Getting Started

内容
准备

  1. 苹果电脑
  2. 安装Xcode编译器
  3. playground的创建以及自动编辑功能

了解一下Playground

Playground

1. 使用Xcode打开并且创建一个Playground

请添加图片描述

2. 创建一个空面板的playground

请添加图片描述

3. 创建完playground之后 设置下面面板

长按可以调出下面效果
使用自动编译功能
playground会自动检测代码区的输入 显示到显示区

请添加图片描述


②、Swift 初学者第 2 部分:变量和常量

Swift for Beginners Part 2: Variables & Constants

内容

扫描二维码关注公众号,回复: 13990151 查看本文章
  1. 变量 - 可以发生变化
  2. 常量 - 不可以改变的
  3. 静态变量 - 只会存储一次
// 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是有类型推导的
比如

  1. 隐性类型推导
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. 函数

  1. 无返回值
  2. 有返回值
  3. 有参数

演示代码 ④、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
    }
}


猜你喜欢

转载自blog.csdn.net/qq_42816425/article/details/124363362