SwiftUI: как преобразовать массив строк в текст
Я попытался следующим это и это и это, но у меня возникают вопросы, получать данные из массива строк.
Мое состояние установлено как
businessHours = : [
"Monday: 7:00 AM – 7:00 PM",
"Tuesday: 7:00 AM – 7:00 PM",
"Wednesday: 7:00 AM – 7:00 PM",
"Thursday: 7:00 AM – 7:00 PM",
"Friday: 7:00 AM – 7:00 PM",
"Saturday: 7:00 AM – 7:00 PM",
"Sunday: Closed"
]
Это дает мне только первый элемент из массива
ForEach(businessHours.indices) {
Text(self.businessHours[$0])
}
Это не удается
ForEach(businessHours.indices) {
Text(self.businessHours)
}
Это работает в консоли
for businesshour in businessHours {
print("Hours: \(businesshour).")
}
Что я здесь делаю не так?
3 ответа
Есть гораздо более простой способ..
Когда у вас есть массив, в котором значения разделены ",", вы можете разделить массив с помощью этого символа запятой
Например: у меня есть модель пользователя с едой. Food — это массив, который выглядит примерно так:
user.food = ["Banana", "Strawberry", "Apple"]
Вы заметили: каждый элемент отделяется запятой.
Теперь вы можете просто использовать
Text(user.food.joined(separator: ", "))
.multilineTextAlignment(.trailing)
.padding()
И вуаля :)
Вот демо, которое работает. Протестировано с Xcode 12 / iOS 14
struct DemoView: View {
let businessHours = [
"Monday: 7:00 AM – 7:00 PM",
"Tuesday: 7:00 AM – 7:00 PM",
"Wednesday: 7:00 AM – 7:00 PM",
"Thursday: 7:00 AM – 7:00 PM",
"Friday: 7:00 AM – 7:00 PM",
"Saturday: 7:00 AM – 7:00 PM",
"Sunday: Closed"
]
var body: some View {
VStack {
ForEach(businessHours.indices) {
Text(self.businessHours[$0])
}
}
}
}
Я понял.
(0..<businessHours.count, id: \.self) { index in
Text(self.businessHours[index])
}