Данные из предыдущего VC (из API) не могут быть переданы другому VC - PullRequest
0 голосов
/ 28 августа 2018

Сценарий должен быть, я собираюсь ввести действительный код события для входа в приложение. Если я ввел действительный код события, он должен отправить Панель инструментов и подробности события должен появиться на нем. DashBoard был успешно отправлен, но никакие подробности о событиях не появились в ярлыках, а Невозможно вставить COPY_SEND в консоли. событие и validpincode превращается в ноль, хотя в действительности оно должно иметь значение. event and validpincode turns nil. Я запутался, где проблема была. в _Unable для вставки COPY_SEND_ или он не получает данные из API. Я видел много проблем и решений, касающихся проблемы COPY_SEND, но я могу найти, что это помогает моей проблеме. Надеюсь, вы можете дать мне немного времени, чтобы помочь мне. Спасибо

Функция showEventDetails

var validPincode: String!
var event: Event!


@IBOutlet weak var eventNameLabel: UILabel!
@IBOutlet weak var dateTimeLabel: UILabel!
@IBOutlet weak var locationLabel: UILabel!




override func viewDidLoad() {
    super.viewDidLoad()

   configureAALoading()

    guard event != nil,
        validPincode != nil else {
            _ = SCLAlertView(appearance: appearance).showError("No Event Details", subTitle: "There's no event details, please logout and try again")
            return
    }

    showEventDetails()
}
func showEventDetails() {

        DispatchQueue.main.async{
            self.eventNameLabel.text =  "\(self.event.name.uppercased())"
            self.locationLabel.text =  "\(self.event.location.uppercased())"

            if let dateStringFromDate = getFormattedStringFromDate(date: (self.event.startDateTime), formatString: "MMMM dd, yyyy/ hh:mm a") {
            self.dateTimeLabel.text = dateStringFromDate
        } else {
            self.dateTimeLabel.text = "-"
        }
    } 
}

validateEventPasscode от View Controller

 func validateEventPasscode(){
    //Show Loading
    self.view.squareLoading.start(0.0)


    let api = APIService(APIKey: passcode)

    api.validatePasscode(passcode: passcode, successBlock: { (event) in
        // VALID PASSCODE AND NOT DELETED OR CLOSED EVENT

        self.event = event
        self.view.squareLoading.stop(0.0)

        self.performSegue(withIdentifier: "showEventDashboard", sender: self)
        self.enteredEventCode.text = ""

переход к Dashboard в ViewController и переходу к DashBoardController

   override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "DashBoardViewController" {
        if let DashboardViewController = segue.destination as? DashBoardViewController {
            DashboardViewController.event = self.event
            DashboardViewController.validPincode = self.passcode
        }
    }
}

APIService

          func validatePasscode(passcode: String,
                  successBlock: @escaping (Event?) -> Void,
                  failureBlock: @escaping (Error) -> Void)
    {
       let passcodeURL = URL (string: "\(PASSCODE_CHECKER_URL)/\(passcode)")


Alamofire.request(passcodeURL!, method: .get).responseJSON { (response) in
        print(response)

       if let error = response.error
       {
        failureBlock(error)
        return
    }

            if let passcodeJSON = response.result.value as? [[String : Any]],
                let passcodeObj = passcodeJSON.first {
                print(passcodeObj)
                let event = Event.init(JSON: passcodeObj);
                successBlock(event)
        }

        }

}
...