Как объединить указанную c строку из массива? [SwiftUI] - PullRequest
0 голосов
/ 26 марта 2020

У меня есть массив:

struct Main: Identifiable {
    var id = UUID()
    var value: String
    var type: String
}
var mainArray = [Main]()

И мне нужно вывести "var value" каждого из элементов этого массива в Text ("")

Например: Text("(main[index].value)")

Но я не знаю, как правильно это сделать

Кроме того, мне нужно будет иметь возможность настроить полученное значение с помощью такой функции:

func readMain() -> String {
        if main[index].value == "specificContent" { return "Correct" }
        else { return "Incorrect"}
    }

А затем добавьте мой Text(readMain()), но он возвращает все значения из массива, например: Text("Correct, Incorrect, Incorrect, Correct, Correct")

Есть идеи?

Заранее спасибо!

1 Ответ

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

Я думаю, что вы ищете что-то вроде этого:

@State private var mainArray = [Main]()

var body: some View {
    ForEach(mainArray) { main in
        Text(
            main.value == "correctValue" ?
            "Correct" :
            "Incorrect"
        )
    }
}

Это печатает, является ли свойство value (каждого основного элемента в вашем mainArray) «правильным» отдельно.

Если тем не менее, вы хотите, чтобы ваш текст отображался в одной строке с пробелом, разделяющим различные значения mainArray, вы можете сделать это:

@State private var mainArray = [Main]()

var body: some View {
    Text(
        mainArray
            .map {
                $0.value == "correctValue" ?
                    "Correct" :
                    "Incorrect"
            }
            .joined(separator: " ")
    )
}

В приведенном выше примере mainArray преобразуется в массив строк, содержащий описание о том, являются ли значения «правильными», и затем эти значения объединяются в одну строку с пробелом («»), разделяющим их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...