【问题标题】:iOS When press button "next" loading new row form parse SwiftiOS当按下按钮“下一步”加载新行表单解析Swift
【发布时间】:2018-07-31 06:03:48
【问题描述】:

我尝试创建一些应用程序,但我遇到了问题,我有这样的结构、问题和答案。

我的班级:

class QuestionManager{
 var question: String?
 var answerA: String?
 var answerB: String?
 var answerC: String?
 var answerD: String?

}

我的代码:

var questions = [QuestionManager]()
var arrayIndex = 0
let query = PFQuery(className: "test")
query.findObjectsInBackground{ (objects, error) in
if error == nil && objects != nil {
    for object in objects as? [PFObject]{
          self.questions.append(QuestionManager(
          question: object!["question"] as! String,
          answerA: object!["answer1"] as! String,
          answerB: object!["answer2"] as! String,
          answerC: object!["answer3"] as! String,
          answerD: object!["answer4"] as! String

          ))
    }
} else {
    print("Error")
}

使用此代码我得到错误:

无法使用“(QuestionManager)”类型的参数列表调用“附加”

为什么我得到这个,错误,也许你会看到我的错误

【问题讨论】:

    标签: ios swift parse-platform


    【解决方案1】:

    替换这个

    var questions = [QuestionManager]()
    var arrayIndex = 0
    let query = PFQuery(className: "test")
    query.findObjectsInBackground{ (objects, error) in
    if error == nil && objects != nil {
        for object in objects as? [PFObject] {
    
              let objQuestionManager = QuestionManager()
    
              objQuestionManager.question = object!["question"] as! String
              objQuestionManager.answerA = object!["answer1"] as! String
              objQuestionManager.answerB = object!["answer2"] as! String
              objQuestionManager.answerC = object!["answer3"] as! String
              objQuestionManager.answerD = object!["answer4"] as! String
    
              self.questions.append(objQuestionManager)
        }
    } else {
        print("Error")
    }
    

    【讨论】:

    • 线程 1:致命错误:在展开可选值时意外发现 nil
    • 现在我想去下一个问题,如果我添加到 arrayIndex +1 什么都没有发生
    • 以上代码将所有对象添加到数组中。用你如何加载下一个问题来更新你的问题。
    • 我有更多的 200 个问题,当我收到 100 个问题时,我收到错误致命错误:索引超出范围
    • 上面的代码不会出现这个错误,我认为这个错误是在你加载下一个问题时产生的。
    【解决方案2】:

    将初始化器添加到接受 4 个输入值的类。

     class QuestionManager{
         var question: String?
         var answerA: String?
         var answerB: String?
         var answerC: String?
         var answerD: String?
    
    
        init(quest: String?, ansA: String? , ansB: String? , ansC: String? , ansD: String){
            question = ques
      answerA = ansA
      answerB = ansB
      answerC = ansC
      answerD = ansD
    
    
        }
    
        }
    

    【讨论】:

      【解决方案3】:

      您收到此错误是因为您没有在模型类中编写 init() 方法并且您正在尝试初始化模型类。你可以这样写。

      class QuestionManager{
          var question = ""
          var answerA = ""
          var answerB = ""
          var answerC = ""
          var answerD = ""
      
          init(question: String, answerA: String, answerB: String, answerC: String, answerD: String){
      
              self.question = question
              self.answerA = answerA
              self.answerB = answerB
              self.answerC = answerC
              self.answerD = answerD
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-04
        • 1970-01-01
        • 1970-01-01
        • 2016-03-18
        • 1970-01-01
        • 2014-01-18
        • 1970-01-01
        相关资源
        最近更新 更多