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

问题描述 投票:1回答:3

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

土豚熊猫狗大象长颈鹿

我想把它变成一个格式为的对象:

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

因此第一个元素始终是列表中的单词,第二个元素始终为false,第三个元素始终是索引

我该怎么做呢?

arrays swift object append swift4
3个回答
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)

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)
        """)
}

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


0
投票

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

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

var selectedItems = Set<Int>()

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

selectedItems.insert(index)

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

selectedItems.remove(index)

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

© www.soinside.com 2019 - 2024. All rights reserved.