Swift: проблемы с перетасовкой ответов в приложении викторины/викториныIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Swift: проблемы с перетасовкой ответов в приложении викторины/викторины

Сообщение Anonymous »


Пожалуйста, помогите мне, поскольку я новичок в SwiftUI и программировании в целом. Это мой первый раз, когда я разрабатываю викторину. Я столкнулся с проблемой перетасовки ответов на простые вопросы. Я пытаюсь создать функцию, содержащую все ответы, включая правильный, и перемешивающую их случайным образом, но я действительно не знаю, как это сделать. Пожалуйста, помогите мне, любая небольшая помощь очень ценится.

Это мой код для TriviaAPIData:

импортировать фундамент struct ВопросОтвет: Декодируемый { вар результаты: [Вопрос] } struct Ответ: Идентифицируемый { вар идентификатор = UUID() переменный текст: строка вар isCorrect: Bool } struct Вопрос: Декодируемый { Категория var: Строка вар вопрос: Строка var правильныйОтвет: Строка var неверные ответы: [Строка] } Это мой код для TriviaAPI:

импортировать фундамент импортировать SwiftUI класс TriviaAPI: ObservableObject { структура TriviaAnswer { пусть текст: строка пусть isCorrect: Bool } @Published var QnAData: [Вопрос] = [] func getQnAData(selectedCategoryNumber: Int, selectedDifficultyInPopup: String) асинхронный бросок { let endpoint = "https://opentdb.com/api.php?amount=10&c ... de=url3986" Guard let url = URL (строка: конечная точка) еще {throw APIErrors.invalidURL} запрос вар = URLRequest (url: URL) request.httpMethod = "ПОЛУЧИТЬ" request.setValue("application/json", forHTTPHeaderField: "Content-Type") let (данные, ответ) = попробуйте дождаться URLSession.shared.data (для: запроса) охранник пусть ответ = ответ как? HTTPURLResponse, response.statusCode == 200 else { бросить APIErrors.invalidResponse } делать { пусть декодер = JSONDecoder() decoder.keyDecodingStrategy = .convertFromSnakeCase let вопросОтвет = попробуйте decoder.decode(QuestionResponse.self, from: data) DispatchQueue.main.sync { self.QnAData = вопросОтвет.результаты } } ловить { бросить APIErrors.invalidData } } } Вот мой код для QuizGameScreen:
импортировать фундамент импортировать SwiftUI структура QuizGameScreen: Посмотреть { @StateObject вар API = TriviaAPI() @Binding var selectedCategoryNumber: Int @Binding var selectedCategoryName: String @State var currentQuestionIndex = 0 @Binding var selectedDifficultyInPopup: String функция shuffleAnswers() { var CorrectAnswers = [api.QnAData[currentQuestionIndex].correctAnswer] var неправильноAnswers = api.QnAData[currentQuestionIndex].incorrectAnswers пусть allAnswers = правильные ответы + неправильные ответы вар shuffelQuestions = allAnswers.shuffled() } var body: some View { ZStack{ Изображение("NewBgQuizUp") .изменяемый размер() .scaledToFill() .edgesIgnoringSafeArea(.all) .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight:.infinity) VStack(выравнивание: .leading){ Текст("Викторина") .font(.system(размер: 36, дизайн: .rounded)).fontWeight(.bold) .foregroundColor(.white) .offset(x: -100, y: -350) } Текст("1 из 0") .font(.system(размер: 23, дизайн: .rounded)).fontWeight(.bold) .foregroundColor(.white) .offset(x: 100, y: -300) VStack{ если !api.QnAData.isEmpty { if currentQuestionIndex < api.QnAData.count { // Проверяем, находится ли текущий индекс вопроса в пределах границ if let decodedQuestion = api.QnAData[currentQuestionIndex].question.removingPercentEncoding { Текст (расшифрованный вопрос) .font(.system(размер: 23, дизайн: .rounded)).fontWeight(.bold) .foregroundColor(.white) .offset(y: -100) } еще { Text("Не удалось расшифровать вопрос") .font(.system(размер: 23, дизайн: .rounded)).fontWeight(.bold) .foregroundColor(.white) .offset(y: -100) } ForEach(0..
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Изменить цвет фона ответов в приложении викторины
    Гость » » в форуме Android
    0 Ответы
    18 Просмотры
    Последнее сообщение Гость
  • Создание викторины на Java с использованием массивов. Нужны указатели с оценкой ответов
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Удаленная форма Rails UJS оценивает JS только для ответов 2XX, но не для ответов 4XX
    Anonymous » » в форуме Jquery
    0 Ответы
    58 Просмотры
    Последнее сообщение Anonymous
  • Могу ли я объединить C++ и Swift в одном пакете Swift, используя диспетчер пакетов Swift?
    Гость » » в форуме C++
    0 Ответы
    218 Просмотры
    Последнее сообщение Гость
  • Таймер обратного отсчета Android в приложении викторины
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»