向Array添加元素时出现Swift语法错误

时间:2014-12-05 06:30:18

标签: swift

它有语法错误。 Swift新手:(

var inputString: String = "Hello its question? </question> Oky its the answer"

let splitter: String = "</question>"
var splittedArray = [inputString .componentsSeparatedByString(splitter)]


var questionIndex = 0
var answerIndex = 0
var mQuestions = []
var mAnswers = []


for var index = 0; index < splittedArray.count; ++index {
if index % 2 == 0{
    // Question comes first
    splittedArray.append(mQuestions[questionIndex])
    questionIndex++
}else{
    // Answer comes second

 splittedArray.append(mAnswers[answerIndex])
    answerIndex++
   }
}

错误是:

  

对象不能转换为String,

在这行代码中。

splittedArray.append(mQuestions[questionIndex])

2 个答案:

答案 0 :(得分:2)

确实存在语法错误,但并非全部:

  • 您不能像使用[inputString.components...]
  • 那样内联Objective-C代码
  • 如果不指定类型
  • ,则无法初始化空数组
  • 您的appends
  • 中的对象和参数已反转

以下是对上述内容的快速重写:

import Foundation

var inputString = "Hello its question? </question> Oky its the answer"

let splitter = "</question>"
var splittedArray = inputString.componentsSeparatedByString(splitter) as [String]

var mQuestions = [String]()
var mAnswers = [String]()

while splittedArray.count >= 2 {
    mQuestions.append(splittedArray.removeAtIndex(0))
    mAnswers.append(splittedArray.removeAtIndex(0))
}

答案 1 :(得分:0)

var splittedArray = [inputString .componentsSeparatedByString(splitter)]

客观的一点点宿醉在这里。使用这些方括号,你将它变成一个内部有数组的数组。这将使splittedArray具有错误的类型和错误的内容。

一旦这个程序编译,它也会崩溃,因为你将使用一个越界索引从空splittedArray数组追加到mQuestions