Как передать данные CloudKit непосредственно в Text (), а не в список - PullRequest
2 голосов
/ 24 марта 2020

Я пытаюсь передать строку из массива в Text (), но можно заставить ее работать, только сначала пропустив ее через список? Я попробовал каждую комбинацию class.struct.item или struct.item et c, пожалуйста, дайте мне знать, как я могу передать его непосредственно в 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 

1 Ответ

1 голос
/ 24 марта 2020

Если вы хотите просто соединить их вместе, это может быть следующим (насколько я вижу вашу модель)

Text("\(workoutElements.workouts.reduce("") { $0 + $1.redWorkout })")

, если нужен какой-либо разделитель, тогда просто замените что-то вроде

$0 + $1.redWorkout + ". "
...