[英]Cannot subscript a value of type '[Int : [String]]' with an index of type 'String!'
[英]Cannot subscript a value of type '[String]' with an index of type 'Int'
我最近嘗試通過添加一個次要改進的UITextField來構建自定義UITableViewCell類。 我也在swift 2編碼,我通過在Xcode 7 beta中重新編譯項目來實現這個錯誤。 我通過調用自定義init方法初始化了數組。
繼承人是我的代碼:
INIT方法
init(dataObject: [NSManagedObject]!, objectAttributeValues: [String]!,placeholder: String!, segmentedControl: UISegmentedControl?) {
self.dataObject = dataObject
self.Placeholder.text = placeholder
self.objectAttributeValues = objectAttributeValues
if segmentedControl != nil {
self.segmentedControl = segmentedControl!
didHaveSegmentedControl = true
}
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
IBACTION EditingChanged
currentInputCount = "\(TextField.text)".characters.count
var indexOfArray: Int = 0
countOfRun = 0
if currentInputCount == 0 {
countOfRun = 0
formerInputCount = 0
editingDidEndForTextField = false
concatenedWord = []
Placeholder.text = ""
}
if !editingDidEndForTextField && currentInputCount > 0 {
while countOfRun < dataObject.count {
if !backspaceWasPressed() {
var arrayOfCharacters: [String] = []
if countOfRun <= dataObject.count - 1 {
for character in objectAttributeValues[countOfRun] {
let string = String(character)
arrayOfCharacters.append(string)
}
}
var convertedStringInFormOfArrayOfStrings: [String] = arrayOfCharacters
if currentInputCount == 1 {
concatenedWord.append(convertedStringInFormOfArrayOfStrings[currentInputCount-1])
}
else if countOfRun > 0 {
if objectAttributeValues[countOfRun].characters.count != concatenedWord[countOfRun].characters.count {
concatenedWord[countOfRun] = concatenedWord[countOfRun] + convertedStringInFormOfArrayOfStrings[currentInputCount-1]
}
}
countOfRun += 1
}
錯誤出現在行中:
for character in objectAttributeValues[countOfRun] {
我不知道它可能是什么......任何人都可以幫助我。
非常感謝!
從Swift 2開始,你不能簡單地循環遍歷String
來枚舉字符,現在你必須在String本身上調用characters
方法:
for letter in "hello".characters {
print(letter)
}
所以對你來說,假設objectAttributeValues[countOfRun]
似乎返回一個String,那將是:
for character in objectAttributeValues[countOfRun].characters {
...
}
這是因為String
在Swift 2中不再符合SequenceType
。
就像埃里克所說,從Swift 2開始,你就不能再像這樣經歷一個字符串了。
在我看來,最簡單,最可能是最好的編程正確的方法是使用一個函數。
所以
func example(s: Int, str: String) -> Character {
var count = 0
for character in str {
if(count == s)
return character
count++
}
return " "
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.