前言
和Apple官网或者网上分享的教程类文章不同,我将以实际开发角度讲述Swift
语言的一些概念和用法,方便大家更好地学习和掌握Swift
语言。
这同时也是对自己学习Swift
语言过程的知识整理和输出。
如有错误,以你为准。
参数声明
在iOS
开发过程中,我们常常需要提前声明好常量和变量,方便在之后的代码中进行引用。
常量
常见的MVVM开发模式中,我们可以创建一个Constants.swift
文件,将我们在App
开发中用到的常量进行声明。
以下面的代码为例:
import SwiftUI public struct Constants { //底部导航栏页面名称 public static let homeViewName = “首页" public static let mineViewName = "我的" } 复制代码
在上面的例子中,我们使用let
来声明homeViewName
、mineViewName
两个常量,它们的值分别是首页、我的。
常量表示着我们这两个参数的值是不变的,也就是homeViewName
所对应的值“首页”,在App
中就是固定叫做首页,而不会中途更新为别的值。
变量
不变的是常量,而在开发过程中可能会被赋予新的值,这个叫做变量,以登录页面为例:
//是否展示提示Toast var showToast = false var showToastMessage = "登录成功"
我们使用var
声明了showToast
、showToastMessage
两个变量,它们的值分别是false
、“登录成功
”。
这里我们为什么要定义变量而不是常量,是因为这两个参数的值是会随着规则而变化。
我们默认是不展示Toast
,也就是showToast
的值默认为false
,当我们业务上将showToast
重新赋值为true
时,此时业务状态可能有两种:登录成功、登录失败。
那么在登录失败的情况下,showToastMessage
展示的文字就不是“登录成功
”了,有可能是“请输入账号
”、“请输入密码
”。
因此这里我们showToast
、showToastMessage
两个变量,我们就会使用var
进行声明。
小结:使用let声明常量,常量的值基本不变,使用var声明变量,变量可以在不同业务下赋予新的值。
数据类型
在我们声明常量或者变量时,Swift
是自动根据参数的值来判断类型的,示例:
//版本号 let versionNumber = “1.0.0"
虽然我们没有给versionNumber
标明是什么类型,但Swift
根据参数的值判断出了versionNumber
是String
字符串类型。
另外,我们也可以自己声明好参数的类型,把参数加上类型注解。
在MVC
或者MVVM
开发模式中,Model
的部分,我们就需要为声明的常量/变量添加类型注解,因为它们是没有初始值的。
import SwiftUI struct Model: Identifiable{ var number: Int var title: String var image: UIImage var enableUsed: Bool }
在上面的例子中,我们声明了4
个变量:number
、title
、image
、enableUsed
,其中number
是Int
整型,title
是String
字符串类型,image
是UIImage
图片类型,enableUsed
是Bool
布尔类型。
另外一个知识点是,一旦定义了参数类型后,在后面我们就不能更改它的类型,而对于常量来说,除了类型不能更改外,值也不能更改。
如果我们想声明一个指定类型的参数时,我们可以指定获得的类型。
let pointNumber = 2.1 let intNumber = Int(pointNumber) print("\(intNumber)”) //输出的结果为2
小结:没有声明参数类型时,Swift会自动根据参数值判断参数类型,变量、常量类型不能直接更改,常量的值也不能更改。
命名方式
在实际开发过程中,无论是声明的参数、结构体、还是页面名称,我们在命名的时候需要遵照一定的原则。
常见的命名方式为“驼峰命名法
”,也就是开始单词为小写,后面组合的单词为写。示例:showToastMessage
。
一般我们命名页面也好,方法也好,声明参数也罢,建议使用英文单词组合,当然Swift
也支持中文、emoji
,例如:
//不建议的声明方式 let 我喜欢的 = “你" let 😊 = ""
但实际开发中,为了统一规范
,建议都还使用英文
进行命名。
代码注释
代码注释一般会出现在两种业务场景,一是代码块命名,我们使用“//
”进行注释,注释的部分不参与运算。
//标题&LOGO private var loginImageView: some View { VStack(spacing: 20) { Image(Constants.appLogo) .resizable() .frame(width: 80, height: 80) .cornerRadius(8) Text(Constants.appName) .font(.system(size: 17)) .foregroundColor(.black) } }
另一种是多行注释,使用“/*注释内容*/
”,常常用在实现方法的解释,或者注释这个代码块。
/* 下面的方法是跳转到AppStore 先声明URL地址,然后带着App的appid执行跳转AppStore的逻辑 */ func gotoAppStore(appId: String) { let urlPrex = "itms-apps" let appUrl = urlPrex + "://itunes.apple.com/app/id" + appId let appNsUrl = NSURL(string: appUrl) UIApplication.shared.open(appNsUrl! as URL, options: [:], completionHandler: nil) }
以上就是本章的全部内容。
快来动手试试吧!