我有一个简单的单词测试列表,例如:
土豚 熊 猫 狗 象 长颈鹿
我想将其转换为格式为
的对象var array: [NSArray] = [["Aardvark", false, 0], ["Bear", false, 1],["Cat", false, 2], ["Dog", false, 3], ["Elephant", false, 4], ["Giraffe", false, 5]]
所以第一个元素总是列表中的单词,第二个元素总是false,第三个元素总是索引
我该怎么做?
答案 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)
套装是一个不错的选择,因为你不能多次添加一个项目。