Swift实用小册11: Subscript下标语法的使用

简介: Swift实用小册11: Subscript下标语法的使用

image.png

在本章中,你将学会Subscript下标语法的使用。

前言


Apple官网或者网上分享的教程类文章不同,我将以实际开发角度讲述Swift语言的一些概念和用法,方便大家更好地学习和掌握Swift语言。

这同时也是对自己学习Swift语言过程的知识整理。


如有错误,以你为准。


我们新建一个SwiftUI项目,命名为SwiftUISubscript

image.png


下标的定义


下标,[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()
    }
}


image.png

上述代码中,我们在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)
        }
    }
}

image.png

值得注意的是,如果我们继续添加到[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)
            }
        }
    }
}


image.png

上述代码中,我们使用了List列表+ForEach循环,在ForEach循环函数中,我们通过点语法获得sampleModels数组中的indices目录,也就是数据索引位置,然后数据的id是它本身,这样可以避免相同名称的数据被认为是一条数据而被过滤。

Text文字部分,我们使用下标的方式,ForEach循环通过[index]索引遍历访问sampleModels数据中的name参数的值。


下标的其他使用


下标的其他使用场景就比较常见了,像之前我们提及过的,通过下标的方式定位数据的位置,还有通过下标插入一个新的值到字典中,示例:


var person = ["文如秋雨": 26,"文如秋雨2": 27]
person["文如秋雨3"] = 28
print(person)


上述代码中,我们通过下标的方式将新的键值对插入到了person数组中,这是比较常见的用法。

image.png

下标的方法类似于实例方法,和定义实例方法的方式一样,定义下标方法我们使用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执行赋值操作,获得一个新的值。

我们打印输出结果看看:

image.png

以上就是本章的全部内容。

快来动手试试吧!

相关文章
|
2月前
|
安全 Swift iOS开发
【Swift开发专栏】Swift基础语法详解
【4月更文挑战第30天】Swift是苹果2014年发布的编程语言,适用于iOS、macOS等多个平台。它比Objective-C更安全、现代、易学。本文主要介绍Swift基础:常量变量(`let`和`var`),数据类型(整数、浮点数、布尔、字符串),元组,可选类型(Optional)。此外,还涉及运算符(算术、比较、逻辑)、控制流(`if`、`for`、`while`、`switch`)以及函数和闭包的使用。通过这些基础知识的学习,可以帮助初学者快速上手Swift。
|
2月前
|
安全 Swift iOS开发
swift语法
swift语法
32 1
|
2月前
|
Swift
Swift语言的语法
Swift语言的语法
48 2
|
JavaScript API Swift
深入浅出Swift(1)——基础语法
深入浅出Swift(1)——基础语法
90 0
|
数据安全/隐私保护 Swift
Swift实用小册26: 正则表达式的使用
在本章中,你将学会常用的正则表达式的使用方法。
274 3
Swift实用小册26: 正则表达式的使用
|
存储 Swift
Swift实用小册25: 高级运算符之位运算符的使用
在本章中,你将学会高级运算符的位运算符的使用方法。
220 0
Swift实用小册25: 高级运算符之位运算符的使用
|
数据安全/隐私保护 Swift 索引
Swift实用小册24: AccessControl访问控制的使用
在本章中,你将学会AccessControl访问控制的使用方法。
162 0
Swift实用小册24: AccessControl访问控制的使用
|
Swift
Swift实用小册23: ARC自动引用计数机制的使用
在本章中,你将学会ARC自动引用计数机制的使用方法。
165 0
Swift实用小册23: ARC自动引用计数机制的使用
|
Swift
Swift实用小册22: OpaqueTypes不透明类型的使用
在本章中,你将学会OpaqueTypes不透明类型的使用方法。
262 0
Swift实用小册22: OpaqueTypes不透明类型的使用
|
Swift
Swift实用小册21: Generics泛型的使用
在本章中,你将学会Generics泛型的使用方法。
158 0
Swift实用小册21: Generics泛型的使用