arrays - 如何在 swift 中实例化一个 Array 类?

标签 arrays class swift instantiation

嘿,当我声明并创建我的类的数组时,我遇到了问题。

我声明了一个这样的数组

var _mScoringData = [ScoringData]()

这是“ScoringData”类

class ScoringData{
    let num : Int!
    let question : String!
    var yes : Bool!
    var no : Bool!    

    init(num:Int,question:String){
        self.num = num
        self.question = question
        self.no = false
        self.yes = false
    }
}

我创建了一个函数来创建实例数组,以下代码是该函数的实现

func createScoringDatas(){
    for var index = 0; index < scoreDataCount; ++index{
        _mScoringData.append(ScoringData(num:index,question: _mQuestionData.Questions[index]))
    }
}

构建很好,但是没有创建数组,并且当我调试时,堆上没有任何内容。 我想知道如何解决这个问题。

谢谢。

最佳答案

如果没有完整的代码,就不可能判断,但原因很可能是因为您的变量 scoreDataCount 为零。如果我获取您的代码,并确保 scoreDataCount 非零,则它可以正常工作。

scoreDataCount 只是 _mQuestionData.Questions 中问题数量的计数吗?如果是这样,您可能需要考虑以下 C 风格 for 和数组下标的替代方案:

for (index, question) in enumerate(_mQuestionData.Questions) {
    _mScoringData.append(ScoringData(num: index, question: question))
}

enumerate(someSequence) 接受一个序列(例如数组),并创建一个新的对序列、从零开始的索引以及序列的元素。然后,您可以使用 for...in 对其进行循环,这可以看起来更干净,并有助于避免错误(就像您遇到的错误)。

一旦理解了这一点,就可以完全废弃 for 循环并将其替换为 map:

_mScoringData = map(enumerate(_mQuestionData.Questions)) { 
  index, question in
    ScoringData(num: index, question: question)
}

请注意,这会创建一个 map ,而不是附加到现有 map ,因此您可能不再需要初始创建行。

每当您有一系列事物,并且想要转换每个元素并将其放入数组中时,map 就是一种情况。您可能会说 for...in 更清晰(特别是如果您不习惯查看 map),但 map 的好处是它使您的意图完全显而易见 - 将输入转换为新数组。

这样做的另一个好处是,如果事实证明您永远不需要更改,您现在可以使用 let 而不是 var 声明 _mScoringData一旦它第一次创建它。

附注在 ScoringData 中的所有成员变量之后,您可能不需要那些 !。这些正在创建隐式展开的选项,并且仅在非常特定的情况下才需要。有时,当需要它们时,您可能会在其他地方看到它们,但您不需要将其复制到每个成员变量上。

关于arrays - 如何在 swift 中实例化一个 Array 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28382214/

相关文章:

c - 如何将二维数组作为参数传递给 C 中的函数

python - Python对象实例中的dict不包含类的方法

C++ 访问类内部的 vector<int> 值

ios - 在 Swift 中为 mapView 上的每个注释显示不同的图像

c++ - 需要帮助理解列表容器

python - 将 3D Numpy 数组 reshape 为 2D 数组

python - 大小可变的数组

java - 根据Java中的类使用不同的方法

ios - Swift - 在 TableViewController -> ViewControllers 之间的简单 Segue 期间出错

ios - Swift 4.2 中带有 JSON 数据的 TableView