mercredi 5 septembre 2018

How do I fix a deep if-else nested

Hi I'm a new swift developer and I'm having trouble thinking of away to reduce my if else nesting. It looks really wrong to me and there must be a better way to do this. Please kindly show me how.

if pigTypeTextField.text == PIG_TYPES_ENUM.gilt.rawValue ||
            pigTypeTextField.text == PIG_TYPES_ENUM.offDutySow.rawValue ||
            pigTypeTextField.text == PIG_TYPES_ENUM.matingSow.rawValue ||
            pigTypeTextField.text == PIG_TYPES_ENUM.drySow.rawValue ||
            pigTypeTextField.text == PIG_TYPES_ENUM.farrow.rawValue {
            if parityTextField.text != "" {
                pigData["parity"] = parityTextField.text!
            } else if pigTypeTextField.text == PIG_TYPES_ENUM.gilt.rawValue {
                if arrivalDateTextField.text != "" {
                    pigData["arrivalDate"] = Helper.stringDateToTimestamp(date: arrivalDateTextField.text!)
                    pigData["herdEntryDate"] = (herdEntryDateTextField.text != "") ? Helper.stringDateToTimestamp(date: herdEntryDateTextField.text!) : ""
                }
            } else if pigTypeTextField.text == PIG_TYPES_ENUM.offDutySow.rawValue {
                if arrivalDateTextField.text != "" &&
                    herdEntryDateTextField.text != "" &&
                    startOffDutySowDateTextField.text != "" {
                    pigData["arrivalDate"] = Helper.stringDateToTimestamp(date: arrivalDateTextField.text!)
                    pigData["herdEntryDate"] = Helper.stringDateToTimestamp(date: herdEntryDateTextField.text!)
                    pigData["startOffDutySowDate"] = Helper.stringDateToTimestamp(date: startOffDutySowDateTextField.text!)
                }
            } else if pigTypeTextField.text == PIG_TYPES_ENUM.matingSow.rawValue {
                if arrivalDateTextField.text != "" &&
                    herdEntryDateTextField.text != "" &&
                    startOffDutySowDateTextField.text != "" &&
                    semenFromBoarIDTextField.text != "" &&
                    technicianNameTextField.text != "" &&
                    matingDateTextField.text != "" {
                    pigData["arrivalDate"] = Helper.stringDateToTimestamp(date: arrivalDateTextField.text!)
                    pigData["herdEntryDate"] = Helper.stringDateToTimestamp(date: herdEntryDateTextField.text!)
                    pigData["startOffDutySowDate"] = Helper.stringDateToTimestamp(date: startOffDutySowDateTextField.text!)
                    pigData["semenFromBoarID"] = semenFromBoarIDTextField.text!
                    pigData["technicianName"] = technicianNameTextField.text!
                    pigData["matingDate"] = matingDateTextField.text!
                }
            }
        }

Aucun commentaire:

Enregistrer un commentaire