SwiftUI列表格式化ListFormatStyle
SwiftUI列表格式化ListFormatStyle

SwiftUI列表格式化ListFormatStyle

SwiftUI 列表格式化,用于格式化和显示数组中的元素为人类可读的列表。这种格式化方式使用的是 Foundation 提供的格式化工具,具体来说是通过 FormatStyle 和 ListFormatStyle 来实现的。

语法说明

format: .list(type: .and) 使用了 ListFormatStyle,它可以格式化集合(如数组)为一个自然语言列表。

构造方式

Text(resort.facilities, format: .list(type: .and))

resort.facilities

一个数组,例如:[“WiFi”, “Pool”, “Gym”]。

.list(type: .and)

表示列表的格式化方式,其中 .and 表示用“和”连接(或者在其他语言中使用等效的“and”词汇)。

.list(type:) 的参数

.and

用“和”连接列表的最后两个元素。

示例

let facilities = ["WiFi", "Pool", "Gym"]
Text(facilities, format: .list(type: .and))

输出

WiFi, Pool, and Gym

.or

用“或”连接列表的最后两个元素。

示例

let facilities = ["WiFi", "Pool", "Gym"]
Text(facilities, format: .list(type: .or))

完整示例

基础用法

struct ContentView: View {
    let facilities = ["WiFi", "Pool", "Gym"]

    var body: some View {
        VStack {
            Text(facilities, format: .list(type: .and))
            Text(facilities, format: .list(type: .or))
        }
    }
}

输出结果

WiFi, Pool, and Gym
WiFi, Pool, or Gym

适用数据类型

数组:例如 [“WiFi”, “Pool”, “Gym”]

集合:例如 Set([“WiFi”, “Pool”, “Gym”])

其他符合 Sequence 协议的类型

实际应用场景

1、展示酒店设施或功能

let facilities = ["WiFi", "Pool", "Spa"]
Text(facilities, format: .list(type: .and))

2、创建用户友好的错误提示

let errors = ["Invalid password", "Email not verified", "Username taken"]
Text(errors, format: .list(type: .or))

3、多语言支持

依赖设备语言和区域设置,生成自动本地化的输出。

优点

简洁:不需要手动拼接字符串或处理分隔符。

本地化:自动支持多语言和区域格式。

灵活:可选择不同的列表连接方式(.and, .or)。

总结

Text(resort.facilities, format: .list(type: .and)) 是一种优雅的方式,用于格式化数组为用户可读的自然语言列表。它不仅代码简洁,而且自动支持国际化,适合在现代 SwiftUI 项目中使用

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注