数组

时间:2017-06-02 06:07:40

标签: for-loop multidimensional-array swift3

我在数组中使用数组。就像是 var arrs = [[String()]]

然后循环通过 -

for i in 0..<arrs.count {
   if arrs[i].contains(textField.text!) {
     self.arr[i].append(field.text!)
  } else {
     self.arr.append([textField.text!])
  }
}
好吧,它只能用于前两个插入 [[“hi”,“hi”]] 然后,当我添加另一个字符串“hi”时,会发生这种情况。

[[“hi”,“hi”],[“hi”]]

我正在尝试的是,如果数组中的“hi”将它们添加到“hi”部分中。如果有新单词,请使用新的部分。所以我尝试“那里”然后这发生了 [[“hi”,“hi”],[“hi”],[“there”],[“there”],[“there”]]

我真的不知道为什么if语句不能正常工作。任何高手的帮助将不胜感激!谢谢!

所以我尝试了@ Nirav的第二个答案,它与Strings完美配合! 然后我尝试用我自己的小类(只是一个变量字符串)我得到一个错误参数标签缺少'在哪里' 这个班看起来像这样 将 var arrs = [[String()]]更改为变量:[[CheckIt]] = []

根据要求!更新了所有代码和错误即将到来

class CheckIt {
    var test:String!

    init(test:String) {
        self.test = test
    }
}

var arrs:[[CheckIt]] = []
let testIt = CheckIt(test: "hi")
let testIt2 = CheckIt(test: "there")
let testIt3 = CheckIt(test: "bye")
let testIt4 = CheckIt(test: "terry")
arrs.append([testIt])
arrs.append([testIt2])
arrs.append([testIt3])
arrs.append([testIt4])


if let index = arrs.index(where: {$0.test.contains(testIt)}) {
    print(index)
}

和我得到的确切错误消息 - 错误:类型'[CheckIt]'的值没有成员'test'

1 个答案:

答案 0 :(得分:3)

问题是你需要break if中的循环,并且只有在没有数组匹配条件时才需要添加新数组,否则它会更进一步。

var found = false
for i in 0..<arrs.count {

    if arrs[i].contains(textField.text!) {
        arrs[i].append(textField.text!)
        found = true
        break
    } 
}
if !found {
    arrs.append([textField.text!])
}

但这不是Swifty方式,您需要使用index(where:)而不需要使用for loop

if let index = arrs.index(where: { $0.contains(textField.text!) }) {
    arrs[index].append(textField.text!)
}
else {
    arrs.append([textField.text!])
}
相关问题