从单词列表中创建对象(var name:[NSArray])

时间:2018-03-02 14:33:16

标签: arrays swift object append swift4

我有一个简单的单词测试列表,例如:

土豚 熊 猫 狗 象 长颈鹿

我想将其转换为格式为

的对象
var array: [NSArray]  = [["Aardvark", false, 0], ["Bear", false, 1],["Cat", false, 2], ["Dog", false, 3], ["Elephant", false, 4], ["Giraffe", false, 5]]

所以第一个元素总是列表中的单词,第二个元素总是false,第三个元素总是索引

我该怎么做?

3 个答案:

答案 0 :(得分:1)

我会这样做,与Josh Robbins回答略有不同。

struct TestInfo {
   var name :  String
   var trueOrFalse : Bool
   var index : Int
}

var array: [TestInfo]  = []
    var animalNames = ["Dog","Cat","Bear","Aatdvark","Duck","Elephant"]
    for (index,eachAnimal) in animalNames.enumerated() {
        let element = TestInfo(name: eachAnimal, trueOrFalse: false, index: index)
        array.append(element)
    }
     print(array)

答案 1 :(得分:0)

您可以将数据存储在struct中,例如:

/// Test Elements
struct TestInfo {

var animalName: String
var trueOrFalse: Bool
var index: Int

}

在ViewController中,您将创建一个数组来存储它们:

  //Array To Store The Test Elements
  var testArray = [TestInfo]()

因此可以填充您的数据:

   override func viewDidLoad() { super.viewDidLoad()

    //1. Create The Test Info
    let setOne = TestInfo(animalName: "Aardvark", trueOrFalse: false, index: 0)
    let setTwo = TestInfo(animalName: "Bear", trueOrFalse: false, index: 1)
    let setThree = TestInfo(animalName: "Cat", trueOrFalse: false, index: 2)
    let setFour = TestInfo(animalName: "Dog", trueOrFalse: false, index: 3)
    let setFive = TestInfo(animalName: "Elephant", trueOrFalse: false, index: 4)
    let setSix = TestInfo(animalName: "Giraffe", trueOrFalse: false, index: 5)

    //2. Add It To The Test Array
    testArray.append(setOne)
    testArray.append(setTwo)
    testArray.append(setThree)
    testArray.append(setFour)
    testArray.append(setFive)
    testArray.append(setSix)

    //3. Retrieve Values & Log The Results
    let name = testArray[0].animalName
    let trueOrFalse = testArray[0].trueOrFalse
    let index = testArray[0].index

    print("""
        1st Animal Name = \(name)
        1st Animal True Or False Value = \(trueOrFalse)
        1st Animal Index = \(index)
        """)
}

这应该让你开始......

答案 2 :(得分:0)

您的结构中的数字似乎与数组索引相对应,这可能使它们变得多余。将所选状态存储在实际数据附近可能不是正确的方式 - 名称数组是您的数据,而选定状态是此数据表示的一部分。

出于这个原因,您可以考虑将数组缩减为一个简单的字符串数组,并添加一组索引,如下所示:

var selectedItems = Set<Int>()

要选择一个项目,您只需将其索引添加到集合中:

selectedItems.insert(index)

要取消选择该项目,您将从集合中删除其索引:

selectedItems.remove(index)

套装是一个不错的选择,因为你不能多次添加一个项目。