Декодируемая выборка данных в другом контроллере представления - PullRequest
0 голосов
/ 14 октября 2019

У меня есть viewcontroller, который я создал. Я могу войти пользователя в мое приложение из моего API. Но я пытаюсь отобразить данные в другом контроллере представления. Я пробовал несколько разных методов, но в итоге получаю ноль. То, что я хочу отобразить, это имя пользователя на карте, но я не получаю данных.

Я попытался передать данные, вызвав их с первого контроллера представления, но они не работали правильно. Я попытался сделать это в segue, но затем получил эту переменную, но в итоге я получил nil

Контроллер первого вида

@IBAction func didTapLoginButton() {

    guard
        let username = usernameTextField.text,
        let password = passwordTextField.text
        else { return }

    jsonRequest(username: username, password: password)
}


@IBOutlet weak var addUserButton: UIButton!
@objc private func editingChanged(_ textField: UITextField) {
if textField.text?.count == 1 {
    if textField.text?.first == " " {
        textField.text = ""
        return
    }
}
guard
    let userName       = usernameTextField.text,   !userName.isEmpty,
    let passWord    = passwordTextField.text,      !passWord.isEmpty
    else {
        addUserButton.isEnabled = false
        return
}
addUserButton.isEnabled = true

}




func formDataRequest(username: String, password: String) {
    let parameters = ["username": username,
                      "password": password]

    networkingService.request(endpoint: "/login", parameters: parameters) { [weak self] (result) in

        switch result {

        case .success(let user): self?.performSegue(withIdentifier: "loginSegue", sender: user)

        case.failure(let error):

            let banner = StatusBarNotificationBanner(title: "Username/Password Incorrect", style: .danger)
            print(error)
            banner.show()
        }
    }
}

func jsonRequest(username:String, password: String) {

    let login = Login(username: username, password: password)

    networkingService.request(endpoint: "/wp-json/jwt-auth/v1/token/", loginObject: login) { [weak self] (result) in

        switch result {

        case .success(let user): self?.performSegue(withIdentifier: "loginSegue", sender: user)

        case.failure(let error):

            let banner = StatusBarNotificationBanner(title: "Username/Password Incorrect", style: .danger)
            print(error)
            banner.show()
        }
    }
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if let mainAppVC = segue.destination as? SupportCardPartTextViewCardController, let user = sender as? User {

        mainAppVC.user = user
    }
}
}

Второй элемент

     struct User: Decodable {
let token: String
let user_email: String
let user_nicename: String
let user_display_name: Int
}

ТретийОдин. Один я хочу данные.

  class SupportCardPartTextViewCardController: CardPartsViewController {

let user: User?

let cardPartTextView = CardPartTextView(type: .normal)

override func viewDidLoad() {
    super.viewDidLoad()

    cardPartTextView.text = user.usernicename  //Display username here instead!!!!
    setupCardParts([cardPartTextView])
}

}

Я получил ноль, когда делал это. Я надеялся, есть ли другой способ сделать это. Спасибо.

...