如何将 CloudKit 数据直接传递到 Text() 而不是列表中
How to pass CloudKit data directly into a Text() instead of into a list
我正在尝试将字符串从数组传递到 Text(),但只能通过先将它传递给列表才能使其工作吗?我已经尝试了 class.struct.item 或 struct.item 等的每种组合,请让我知道如何将它直接传递到 Text() 以在其他视图中使用。
import SwiftUI
struct WorkoutView: View {
@EnvironmentObject var workoutElements: WorkoutElements
@State private var newWorkout = WorkoutElement(redWorkout: "")
var body: some View {
NavigationView {
List(workoutElements.workouts) { item in
VStack {
Text(item.redWorkout)
}
}
}
.onAppear {
// MARK: fetch from CloudKit
WorkoutFetcher.fetch { (result) in
switch result {
case .success(let newWorkout):
self.workoutElements.workouts.append(newWorkout)
print("succesfully fetched Item")
case .failure(let err):
print(err.localizedDescription)
}
}
}
}
}
struct WorkoutView_Previews: PreviewProvider {
static var previews: some View {
WorkoutView()
}
}
// this works for a list
//List(workoutElements.workouts) { item in
//VStack {
//Text(item.redWorkout)
//}
//}
// but this doesn't work for Text()
// Text(workoutElements.workouts.redworkouts)
// Text(workouts.redworkouts)
//etc
如果你只是想把它们连在一起,可以如下(据我看你的模型)
Text("\(workoutElements.workouts.reduce("") { [=10=] + .redWorkout })")
如果需要任何分隔符,则只需替换为
[=11=] + .redWorkout + ". "
我正在尝试将字符串从数组传递到 Text(),但只能通过先将它传递给列表才能使其工作吗?我已经尝试了 class.struct.item 或 struct.item 等的每种组合,请让我知道如何将它直接传递到 Text() 以在其他视图中使用。
import SwiftUI
struct WorkoutView: View {
@EnvironmentObject var workoutElements: WorkoutElements
@State private var newWorkout = WorkoutElement(redWorkout: "")
var body: some View {
NavigationView {
List(workoutElements.workouts) { item in
VStack {
Text(item.redWorkout)
}
}
}
.onAppear {
// MARK: fetch from CloudKit
WorkoutFetcher.fetch { (result) in
switch result {
case .success(let newWorkout):
self.workoutElements.workouts.append(newWorkout)
print("succesfully fetched Item")
case .failure(let err):
print(err.localizedDescription)
}
}
}
}
}
struct WorkoutView_Previews: PreviewProvider {
static var previews: some View {
WorkoutView()
}
}
// this works for a list
//List(workoutElements.workouts) { item in
//VStack {
//Text(item.redWorkout)
//}
//}
// but this doesn't work for Text()
// Text(workoutElements.workouts.redworkouts)
// Text(workouts.redworkouts)
//etc
如果你只是想把它们连在一起,可以如下(据我看你的模型)
Text("\(workoutElements.workouts.reduce("") { [=10=] + .redWorkout })")
如果需要任何分隔符,则只需替换为
[=11=] + .redWorkout + ". "