Как создать Json из элементов в списке в VStack? - PullRequest
0 голосов
/ 05 мая 2020

У меня следующая структура

struct ContentView: View {

    @State private var usedWord = [String]()
    @State private var  rootWord = ""
    @State private var newWord = ""

    var manager = HttpRequest()

    var body: some View {
        NavigationView{
            VStack{
                TextField("Enter your symptom", text: $newWord, onCommit: addNewWord)
                    .textFieldStyle(RoundedBorderTextFieldStyle())
                    .autocapitalization(.none )
                    .padding()
                List {
                    ForEach(usedWord, id: \.self){
                    Text($0)
                    }
                    .onDelete(perform: deleteItem)
                }

                Button("Get diagnose"){
                    // here we plac logic of sending request to API server

                }
            }
        .navigationBarTitle(rootWord)
        }
    }

    func addNewWord() {
        let answer = newWord.lowercased( ).trimmingCharacters(in: .whitespacesAndNewlines)
        guard answer.count > 0 else {
            return
        }

        // extra validation to come
        usedWord.insert(answer, at: 0)
        newWord = ""
    }

     func deleteItem(at indexSet: IndexSet) {
        self.usedWord.remove(atOffsets: indexSet)
    }
}

Это список текстовых элементов в нем. В кнопке («Получить диагностику») я хотел бы перебрать список и создать объект Json, чтобы отправить его на сервер API. Структура Json выглядит примерно так: {'1': 'боль в груди', '2': 'головная боль'}. У меня есть функция запроса, но я не знаю, как создать Json

1 Ответ

1 голос
/ 05 мая 2020

Вам не нужно перебирать list. Вы должны перебирать данные списка, например:

Button("Get diagnose"){
    // here we plac logic of sending request to API server
    for word in self.usedWord.enumerated() {
       print(word.offset, ":", word.element)
    }
}

Я не знаю, зачем вам JSON, но вы можете построить dictionary из этого, например:

let dictionary = Dictionary(uniqueKeysWithValues: zip(self.usedWord.indices, self.usedWord))

И JSONData вроде:

let jsonData = try? JSONSerialization.data(withJSONObject: dictionary, options: [])
...