首页 > 解决方案 > 如何在 SwiftUI 中显示显示数组的文本

问题描述

我有一系列日期

let Dates = ["2021-01-07","2021-01-19"]

我想在文本中显示它们作为刺痛

Text("\(Dates)")

但是我不断收到错误

Cannot call value of non-function type '[String]'.

我想知道这样做是否可以在 swiftUI 中实现。

我还想知道我是否可以以格式显示今天的日期

YYYY-MM-DDT00:00:00Z.

标签: xcodeswiftuixcode12

解决方案


  1. 在 Swift 中,通常变量名是小写的:
let dates : [String] = ["2021-01-07","2021-01-19"]
  1. 要按原样显示这些Text内容,您需要[String]String. 一种可能性是:
Text(dates.joined(separator: ", "))
  1. 如果您希望它们采用不同的格式,则需要从转换StringDate
struct ContentView: View {
    @State private var formatterIn = DateFormatter()
    @State private var formatterOut = ISO8601DateFormatter()
    let dates : [String] = ["2021-01-07","2021-01-19"]
    
    var datesToNewFormat : String {
        formatterIn.dateFormat = "yyyy-MM-dd"
        return dates.compactMap { formatterIn.date(from: $0) }.map { formatterOut.string(from: $0)}
            .joined(separator: ", ")
    }
    
    var body: some View {
        VStack {
            Text(dates.joined(separator: ", "))
            Text(datesToNewFormat)
        }
    }
}

请注意最后一项,它也处理时区转换。在您的示例中,如果您愿意T00:00:00Z最简单的方法是将其附加到原始字符串的末尾:

dates.map { $0 + "T00:00:00Z" }

或者,您可以使用 DateComponents 手动将小时设置为零。这一切都可能取决于您的输入来自哪里以及您对输出的意图是什么。

还可能值得一提的是,SwiftUI 有一些用于DateText. 见https://www.hackingwithswift.com/quick-start/swiftui/how-to-format-dates-inside-text-views


推荐阅读