#ios #swift
#iOS #swift
Вопрос:
Я хочу передать значение, содержащееся в param в LoginViewController.swift, в NetworkHandler.swift.
Я продолжаю пытаться, но значение не передается, и я получаю сообщение об ошибке. В чем проблема?
Я пробовал это со вчерашнего дня, но все еще не мог найти решение. помощь была бы признательна.
LoginViewController.swift
var param: String?
@IBOutlet var inputId: UITextField!
@IBOutlet var inputPass: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
NetworkHandler.LoginBoard({ LoginList in
self.LoginList = LoginList
}, param: param ?? "")
}
@IBAction func btnLogin(_ sender: UIButton) {
param = "userId=(inputId.text ?? "")amp;userPw=(inputPass.text ?? "")"
print("This is Param = ",param!)
let controller = NetworkHandler.LoginBoard(completeHandler: (Login) -> Void, param: param ?? "")
controller.param = param // ERROR [Value of tuple type '()' has no member 'param'
}
NetworkHandler.swift
class func LoginBoard(_ completeHandler: @escaping (Login) -> Void, param: String) {
let loginboard: String = MAIN_URL "/member/login"
guard let url = URL(string: loginboard) else {
print("Error: cannot create URL")
return
}
let param = param
let paramData = param.data(using: .utf8)
}
Я до сих пор не знаю, в чем проблема.
Комментарии:
1. Вы назначаете метод своему
controller
переменному.LoginBoard
метод возвращаетVoid
. Поскольку ошибка указывает на пустой кортеж()
, такой же, какVoid
не имеетparam
свойства.2. Извините, я исправил, базовый синтаксис еще не идеален, поэтому есть много ошибок. Я исправил ту часть, о которой вы сообщили. Тогда спасибо, если loginBoard возвращает void , Loginviewcontroller и свойство не совпадают, поэтому вы вообще не можете передать значение?
3. ваш обработчик завершения должен быть последним параметром вашей подписи метода входа в систему.
4.Что
controller
должно быть? Например, внутриUIView
— это типframe
, который вы можете сделатьlet view = UIView()
view.frame = CGRect()
; в вашем случае выcontroller.param = param
хорошо справляетесь с тем, что это за типcontroller
? Я спрашиваю, потому что вы установилиlet controller = NetworkHandler.LoginBoard(completeHandler: (Login) -> Void, param: param ?? "")
, ноNetworkHandler.LoginBoard
ничего не возвращает. Какой классLoginBoard
предполагается возвращать?