Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 添加第二步进器时应用程序崩溃_Ios_Swift - Fatal编程技术网

Ios 添加第二步进器时应用程序崩溃

Ios 添加第二步进器时应用程序崩溃,ios,swift,Ios,Swift,我已经成功地更新了一个文本字段的值,现在我正在尝试添加第二个步进器,但是应用程序现在崩溃了 @IBOutlet weak var propertyTypeField: UITextField! @IBOutlet weak var insuranceTypeField: UITextField! @IBOutlet weak var bedroomField: UITextField! @IBOutlet weak var bathroomField: UITextField! @IBO

我已经成功地更新了一个文本字段的值,现在我正在尝试添加第二个步进器,但是应用程序现在崩溃了

    @IBOutlet weak var propertyTypeField: UITextField!
@IBOutlet weak var insuranceTypeField: UITextField!
@IBOutlet weak var bedroomField: UITextField!
@IBOutlet weak var bathroomField: UITextField!
@IBOutlet weak var doYouOwnPropertyField: UITextField!

@IBOutlet weak var propertyYearField: UITextField!
@IBOutlet weak var bathroomStepper: UIStepper!
@IBOutlet weak var bedroomStepper: UIStepper!

override func viewDidLoad() {
    super.viewDidLoad()

    view.backgroundColor = UIColor(red: 0xE1/255, green: 0xE1/255, blue: 0xE1/255, alpha: 1.0)


    //Bedroom stepper setup
    bedroomField.text = "\(Int(bedroomStepper.value))"
    bedroomStepper.addTarget(self, action: "stepperValueDidChange:", forControlEvents: .ValueChanged)

    //Bathroom stepper setup
    bathroomField.text = "\(Int(bathroomStepper.value))"
    bathroomStepper.addTarget(self, action: "stepperValueDidChange:", forControlEvents: .ValueChanged)

    // Do any additional setup after loading the view.
}




override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func viewTapped(sender : AnyObject) {

    propertyTypeField.resignFirstResponder()
    insuranceTypeField.resignFirstResponder()
    bedroomField.resignFirstResponder()
    bathroomField.resignFirstResponder()
    doYouOwnPropertyField.resignFirstResponder()
    propertyYearField.resignFirstResponder()

}

func stepperValueDidChange(stepper: UIStepper) {

    let bedroomStepperMapping: [UIStepper: UITextField] = [bedroomStepper: bedroomField]
    if !(bedroomField.text == ""){
    bedroomStepperMapping[stepper]!.text = "\(Int(stepper.value))"}

    let bathroomStepperMapping: [UIStepper: UITextField] = [bathroomStepper: bathroomField]
    if !(bathroomField.text == ""){
    bathroomStepperMapping[stepper]!.text = "\(Int(stepper.value))"}
}
这就是我正在使用的全部代码

我得到的错误是

致命错误:在展开可选值时意外发现nil

希望有人能帮忙


使用
感谢
卧室步进映射[步进器]!。text
告诉编译器将有一个值。因为没有一个明显的错误。在展开前检查该值是否为零

在你说的行中检查零是个问题

if !(bedroomField.text == ""){ 

    //Ok to unwrap object
 }

如果您使用的是可选值,请首先检查值是否存在,如果不存在,则不能有b null,以便按如下方式执行

if let bedFeild = Int(stepper.value) {
bedroomStepperMapping[stepper].text = bedFeild
}

现在,如果该值存在,则不会发生崩溃,然后将该值分配给它,否则不会发生任何崩溃

它崩溃在哪一行?stepper.value包含什么?>卧室StepperMapping[stepper]!。text=“(Int(stepper.value))”如何检查此值?我已将文本字段设置为默认值“0”,步进器的当前设置也设置为“0”。向我们展示如何将这些值设置为0BeddroomField.text=“0”bathroomField.text=“0”,并且步进器在属性检查器中设置为零。当然
BeddroomField text
应该是
您可以更新您的问题,以显示您实际上是如何做到这一点的。我已经更新了我的答案,为你添加了所有的代码。顺便说一下,非常感谢。嗨,谢谢你的回复,我尝试了你的修复,但它不起作用。我得到一个错误,“条件绑定中的绑定值必须是可选类型”代码如下所示。。。如果let bedroomField=Int(stepper.value){bedroomspedermapping[stepper]!.text=“(Int(stepper.value))”}在if语句中,它应该是bedroomspedermapping[stepper]。text=bedroomField
如果let bedroomField=Int(stepper.value){bedroomspedermapping[stepper]。text=bedroomField}
-这是否正确?我收到了相同的错误和附加错误,“/'UIStepper'不能转换为'DictionaryIndex'”这没有提供问题的答案。它阻止了应用程序崩溃?当发布您自己问题的答案时,请提供简短的解释,而不仅仅是一段代码。谢谢
func stepperValueDidChange(stepper: UIStepper) {
    if bedroomStepper == stepper{
        bedroomField.text = "\(Int(stepper.value))"}
    if  bathroomStepper == stepper{
        bathroomField.text = "\(Int(stepper.value))"}
    }
}