我在数组中使用数组。就像是 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'
答案 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!])
}