Swift 入门与实践|青训营笔记

152 阅读5分钟

这是我参与「第四届青训营」笔记创作活动的的第十五天。本篇文章将会介绍Swift的一些基础语法和使用,并学习Swift UI的使用。

一、Swift基础知识

基本类型

let可以创建一个不可变变量,常量在一开始被声明之后就一直保持同样的值。var可以创建一个可变变量,变量在声明之后可以被改变。

例子:

let aConstant = 10
var aVariable = 11
aVariable = 12

每个常量和变量在Swift中都有一个类型,但是不用把类型直接写出来。当你声明一个常量或者变量的时候,提供给这个常量或者变量一个值,让编译器去推断它的类型。在上面的例子中,编译器推断出aVariable是一个整型,因为它的初始值是一个整型值。这种特性叫做类型推断。一旦常量或者变量有了一个类型,那么这个类型就不能改变。

例子:

let age: Int = 19
var names: [String] = "Apple"

对于初始值提供不了足够的信息或者没有初始值的常量或者变量,就需要通过在变量名之后为其指定类型,中间通过冒号分隔。

例子:

let label = "The width is"
let width = 90
let widthLabel = label + String(Width)

或者在圆括号中写值

let apples = 3
let oranges = 5
let appleSummary = "I have \(apples) apples."
let fruitSummary = "I have \(apples + oranges) pieces of fruit."

值不会隐式地转换为另一种类型。如果需要把一个值转换为另一种不同的类型,那你需要显式地创建一个你期望的类型的实例。在上面的例子中,你将转换一个Int类型的值为一个String类型的值。还有一种更简单的方式把值转换成String类型:在圆括号中写值,并在圆括号中的开始处插入反斜杠“\”。这就是我们熟悉的字符串插值表达式。

例子:

let name: String?

可选值:使用可选类型处理值有可能出现值缺失的情况。可选类型的值要么包含一个值,要么就是一个表明值缺失的nil(没有值)。在值的类型后面加上问号(?)以标记该值为可选类型。

控制流:

Swift中有两种控制流语句:

  1. 条件语句

检查一个条件是不是true。如果条件是true,就执行在语句体内的代码。你可以通过在if语句中增加else子句定义更复杂的行为。else子句可以和if语句合成为链式使用,也可以自己单独使用。在这种情况下,如果if语句下的条件是false就会执行else语句。

  1. 循环

比如for loop 和while loop,多次执行相同的代码片段。

函数和方法

使用func去声明一个函数。函数声明可以包含零个或者多个参数,格式如name:Type。用->来明确函数返回的类型。如果不想输入参数名的话可以前面加“_“表示省略该字符。

func greet(name: String) -> String {
    return "Hello \(name)."
}

inout参数表示参数传递是引用传递。在调用时,在参数前面加上&。

对象是类(class)的实例,实例可以认为你是对象的蓝图。类使用属性的方式存储关于它们自身的信息,使用方法定义它们的行为。

通过在class关键字的后面加上类的名字来定义一个类。在类中,属性的写法和定义常量和变量相同,除了它是写在类的上下文中之外。同样地,方法的定义和函数的定义也是类似的。如果要创建一个类的实例,只需要在类的名字后面加上圆括号。使用点操作符(.)去访问实例中的属性和方法。

//class关键字的后面加上类的名字来定义一个类
class SomeClass{
var name: String
init (name: String){self.name = name}
}
//使用点操作符(.)去访问实例中的属性和方法
print(someClass.name)
someClass.name = "Tom"

二、SwiftUI

SwiftUI is a user interface toolkit that lets us design apps in a declarative way. That’s a fancy way of saying that we tell SwiftUI how we want our user interface to look and work, and it figures out how to make that happen as the user interacts with it. --Paul Hadson

引用:www.hackingwithswift.com/quick-start…

“SwiftUI 是一个用户界面工具包,可让我们以声明性方式设计应用程序。这是一种奇特的说法,我们告诉 SwiftUI 我们希望用户界面的外观和工作方式,它会在用户与之交互时弄清楚如何实现这一点。“

构建基础的用户界面

  • 在欢迎界面中,点击“Create a new Xcode project”(或者选择 File > New > Project)。Xcode将会打开一个新的窗口,并且显示一个对话框。在这个对话框中,选择一个模版。
  • 在对话框左边的iOS区域中,选择Application。
  • 在对话框的主区域里,点击Single View Application,然后点击Next。
  • 在显示的对话框中,使用下面的值命名你的应用,并为你的应用选择其它合适的选项。
  • Product Name: FoodTracker Xcode将会使用你输入的这个名字命名你的工程和应用。
  • Organization Name: 你的组织的名字或者你自己的名字。你可以把这项留空。
  • Organization Identifier: 你的组织的标识,如果你有的话,就如实填写;如果没有,可以使用com.example。
  • Bundle Identifier:这个值是基于你的Product Name和Organization identifier自动生成的。
  • Language:Swift

引用:calvin92.gitbooks.io/apple-ios-s…

思考&总结

UIKit与SwiftUI有什么区别?

  • SwiftUI 中没有 Xcode Interface Builder
  • UI更新是反应性的,而不是强制性的
  • 文档、支持和可用内容,与SwiftUI相比,UIKit的内容要多得多。
  • 最低 iOS 版本

引用:getstream.io/blog/uikit-…

本篇文章简单介绍了如何Swift的基础知识以及如何使用SwiftUI。

Reference

《苹果官方iOS入门教程(Swift)中文版》calvin92.gitbooks.io/apple-ios-s…

《Swift 入门与实践》juejin.cn/post/712344…

《What is SwiftUI?》www.hackingwithswift.com/quick-start…

《UIKit vs. SwiftUI: How to Choose the Right Framework for Your App》getstream.io/blog/uikit-…