iOS当按下按钮“下一步”加载新行表单解析Swift

Posted

技术标签:

【中文标题】iOS当按下按钮“下一步”加载新行表单解析Swift【英文标题】:iOS When press button "next" loading new row form parse 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)”类型的参数列表调用“附加”

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

【问题讨论】:

【参考方案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
    

【讨论】:

以上是关于iOS当按下按钮“下一步”加载新行表单解析Swift的主要内容,如果未能解决你的问题,请参考以下文章

当按下默认插入记录按钮 oracle 表单时触发

当按下提交按钮时,与在文本框中提取信息相比,表单的用途是啥? [复制]

无法提交克隆的表单

Ninja 表单:多部分表单 - 字段单击的下一步 (jQuery)

当按下自定义按钮时,UILabel 不会更新(Objective-C)

iOS Safari HTML表单下一个/上一个按钮 - 它们如何工作?