You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift MVC模式下Quiz应用报错:无法识别question变量创建数组

解决Swift MVC Quiz应用中无法识别question变量的问题

嘿,我来帮你捋捋这个问题!你说在创建Questions数组时程序识别不了question变量,先看你的QuizModel结构体代码——本身结构是没问题的,但问题大概率出在你创建数组的方式上,咱们一步步来解决:

问题根源

你定义的QuizModel是一个结构体,question是它内部的存储属性,只有当你创建了这个结构体的实例之后,才能访问这个属性。如果直接写类似let questions = [question]这种代码,编译器根本不知道你指的是哪个实例的question,自然会报错说识别不了这个变量。

正确的解决步骤

1. 先优化你的QuizModel结构体(可选但推荐)

你现在用了隐式解包可选类型(!),其实没必要——因为你的初始化方法已经给所有属性都赋了值,改成非可选类型更安全,避免潜在的空值崩溃:

import UIKit

struct QuizModel {
    let question: String
    let options: [String]
    let answer: Int
    
    init(question: String, options: [String], answer: Int) {
        self.question = question
        self.options = options
        self.answer = answer
    }
}

2. 创建QuizModel实例并填充数组

你需要先创建多个QuizModel的实例(每个实例对应一道题目),再把这些实例放进数组里,而不是直接用question属性:

// 方式1:先创建单个实例再组装数组
let firstQuestion = QuizModel(question: "2+2等于多少?", options: ["3", "4", "5"], answer: 1)
let secondQuestion = QuizModel(question: "以下哪个是Swift关键字?", options: ["func", "function", "method"], answer: 0)

let questions: [QuizModel] = [firstQuestion, secondQuestion]

// 方式2:直接在数组里初始化实例(更简洁)
let questions: [QuizModel] = [
    QuizModel(question: "法国的首都是哪里?", options: ["伦敦", "巴黎", "柏林"], answer: 1),
    QuizModel(question: "iOS UI开发常用框架是?", options: ["UIKit", "SwiftUI", "React Native"], answer: 0)
]

3. 在UIKit类中使用数组

如果要在你的ViewController里使用这个数组,可以把它定义为类的属性,然后在合适的时机(比如viewDidLoad)初始化:

import UIKit

class QuizViewController: UIViewController {
    // 定义存储题目数组的属性
    private var questions: [QuizModel] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // 初始化题目数组
        setupQuestions()
        // 现在你可以正常访问数组里的question属性了
        print(questions[0].question)
    }
    
    private func setupQuestions() {
        questions = [
            QuizModel(question: "2+2等于多少?", options: ["3", "4", "5"], answer: 1),
            QuizModel(question: "以下哪个是Swift关键字?", options: ["func", "function", "method"], answer: 0)
        ]
    }
}

这样你就能正常访问数组中每个实例的question、options和answer属性啦!

内容的提问来源于stack exchange,提问作者user9323924

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:52:16