Ios 尤里卡形成动态价值观
我希望根据从API调用获得的输入动态设置字段的值。 因此,我从服务器获取答案,将其解析为对象,并尝试设置值。 但是这是不可能的,因为rowBy(tag:)方法返回一个BaseRow,所以我不知道该行是什么类型。并且基线没有参数值 是否有一种已知的方法允许我检查字段类型并设置值 ``` ItemProducer.itemGetFormAnswers(带参数:参数){(成功、响应数据、错误)在Ios 尤里卡形成动态价值观,ios,swift,eureka-forms,Ios,Swift,Eureka Forms,我希望根据从API调用获得的输入动态设置字段的值。 因此,我从服务器获取答案,将其解析为对象,并尝试设置值。 但是这是不可能的,因为rowBy(tag:)方法返回一个BaseRow,所以我不知道该行是什么类型。并且基线没有参数值 是否有一种已知的方法允许我检查字段类型并设置值 ``` ItemProducer.itemGetFormAnswers(带参数:参数){(成功、响应数据、错误)在 }```是否要检查特定的类 if myObject is MyClass { // myObjec
}```是否要检查特定的类
if myObject is MyClass {
// myObject is of type MyClass
}
因此,您还可以尝试更详细的内容:
guard let _ : MyRow = self.form.rowBy(tag: String(describing: answerObject?.questionID)) else {
// do your logic
return
}
如果您不知道在dict中序列化了什么类型的json对象,可以检查以下特定属性:
if let mySpecificAttribute = answerObject["mySpecificAttribute "] as? String {
// answerObject got a value for key "mySpecificAttribute "
}
我终于有了一个分类账的想法。我知道这是一个选择,但我希望尤里卡有一个更先进的选择。对于那些对执行这个想法感兴趣的人,我做了以下几点
`
//Loop through all the questions
for question in self.arrQuestions {
switch(question.detailType) {
case .checkBox:
if let answerObject = self.answers[question.questionID] {
let row = self.form.rowBy(tag: String(describing: answerObject.questionID)) as! CheckRow
row.value = Bool(answerObject.answer)
row.reload()
}
break
case .dateTime:
if let answerObject = self.answers[question.questionID] {
let row = self.form.rowBy(tag: String(describing: answerObject.questionID)) as! DateTimeRow
let date = Date.init(timeIntervalSince1970: Double((answerObject.answer)!)!)
row.value = date
row.reload()
}
break
...... etc......
`
是的,我已经尝试过了,但是rowBy方法返回一个可以类型转换到不同类的BaseRow类。
`
//Loop through all the questions
for question in self.arrQuestions {
switch(question.detailType) {
case .checkBox:
if let answerObject = self.answers[question.questionID] {
let row = self.form.rowBy(tag: String(describing: answerObject.questionID)) as! CheckRow
row.value = Bool(answerObject.answer)
row.reload()
}
break
case .dateTime:
if let answerObject = self.answers[question.questionID] {
let row = self.form.rowBy(tag: String(describing: answerObject.questionID)) as! DateTimeRow
let date = Date.init(timeIntervalSince1970: Double((answerObject.answer)!)!)
row.value = date
row.reload()
}
break
...... etc......
`