Swift实用小册11: Subscript下标语法的使用
【摘要】 在本章中,你将学会Subscript下标语法的使用。前言和Apple官网或者网上分享的教程类文章不同,我将以实际开发角度讲述Swift语言的一些概念和用法,方便大家更好地学习和掌握Swift语言。这同时也是对自己学习Swift语言过程的知识整理。如有错误,以你为准。我们新建一个SwiftUI项目,命名为SwiftUISubscript。下标的定义下标,[index],是一种快速访问类、结构体...
在本章中,你将学会Subscript下标语法的使用。
前言
和Apple官网或者网上分享的教程类文章不同,我将以实际开发角度讲述Swift语言的一些概念和用法,方便大家更好地学习和掌握Swift语言。
这同时也是对自己学习Swift语言过程的知识整理。
如有错误,以你为准。
我们新建一个SwiftUI项目,命名为SwiftUISubscript。
下标的定义
下标,[index],是一种快速访问类、结构体、枚举中的元素的方式。
我们可以使用下标的索引,快速访问Model中的参数值,从而展现在我们的View中。
下标的使用
在Swift实际开发中,我们常常定义好一个Model结构体,用来存储我们需要的数据信息,其中包含属性、类型、初始值。
我们新建一个Swift文件,命名Model。
然后我们会声明一个数据存储我们示例的演示数据,示例:
import SwiftUI
struct Model: Identifiable {
var id = UUID()
var name: String
}
var sampleModels = [
Model(name: "这是微信"),
Model(name: "这是QQ"),
Model(name: "这是微博"),
Model(name: "这是手机"),
Model(name: "这是邮箱")
]
上述代码中,我们定一个Model结构体,它遵循Identifiable,这样我们就可以通过ID找到对应的参数。然后我们使用var声明了一个sampleModels数组,创建了一些示例的数据作为演示使用。
完成之后,我们尝试在ContentView结构体中展示这些数据。
struct ContentView: View {
var body: some View {
Text(sampleModels[0].name)
.padding()
}
}
上述代码中,我们在ContentView结构体中的Text文本可通过下标的方式直接访问sampleModels数组中[0]第一条数据(索引从0开始算),然后通过点语法访问name的值。
我们创建多几条数据看看效果。
struct ContentView: View {
var body: some View {
VStack(alignment: .center, spacing: 20) {
Text(sampleModels[0].name)
Text(sampleModels[1].name)
Text(sampleModels[2].name)
Text(sampleModels[3].name)
Text(sampleModels[4].name)
}
}
}
如果我们继续添加到[5],Xcode会报错,这是因为sampleModels数组中找不到第6个数据。
下标的使用进阶
在Swift实际开发过程中,我们常常使用List列表+ForEach循环的方式遍历数据中的数据,示例:
struct ContentView: View {
var body: some View {
List {
ForEach(sampleModels.indices,id: \.self) { index in
Text(sampleModels[index].name)
}
}
}
}
上述代码中,我们使用了List列表+ForEach循环,在ForEach循环中,我们通过点语法获得sampleModels数组中的indices目录,也就是数据索引位置,然后数据的id是它本身,这样可以避免相同名称的数据被认为是一条数据而被过滤。
Text文字部分,我们使用下标的方式,ForEach循环通过[index]索引遍历访问sampleModels数据中的name参数的值。
下标的其他使用
下标的其他使用场景就比较常见了,像之前我们提及过的,通过下标的方式定位数据的位置,还有通过下标插入一个新的值到字典中,示例:
var person = ["文如秋雨": 26,"文如秋雨2": 27]
person["文如秋雨3"] = 28
print(person)
上述代码中,我们通过下标的方式将新的键值对插入到了person数组中,这是比较常见的用法。
下标的方法类似于实例方法,和定义实例方法的方式一样,定义下标方法我们使用subscript关键字,示例:
class category {
var exampleModels = ["前端", "后端", "安卓", "iOS"]
subscript(index: Int) -> String {
get {
return exampleModels[index]
}
set(newValue) {
exampleModels[index] = newValue
}
}
}
var categoryItem = category()
print(categoryItem[0])
print(categoryItem[1])
上述代码中,我们定义了一个category类,然后声明了一个exampleModels数组并赋予了一些值,在subscript下标语法中,我们传入一个Int参数,然后返回一个String类型的值,我们使用get方法访问exampleModels数组中的指定值,然后set执行赋值操作,获得一个新的值。
我们打印输出结果看看:
以上就是本章的全部内容。
快来动手试试吧!
如果本专栏对你有帮助,不妨点赞、评论、关注~
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)