Я пытаюсь разработать страницу входа для доступа к серверу с помощью Alamofire. Отправив имя пользователя и пароль, сервер вернет токен. Мне нужно использовать текстовое поле, чтобы пользователь мог вставить имя пользователя и пароль, а затем сохранить имя пользователя, пароль и токен в базе данных с помощью CoreData.
import SwiftUI
import Alamofire
import SwiftyJSON
struct LogInView: View {
@Environment(\.managedObjectContext) var managedObjectContext
@Environment (\.presentationMode) var presentationMode
@State var username : String = ""
@State var password : String = ""
@State var userId : Int = 0
@State var token : String = ""
var body: some View {
NavigationView {
VStack(spacing: 20) {
TextField("Username", text: $username)
.padding()
.background(Color.gray)
.cornerRadius(5.0)
TextField("Password", text: $password)
.padding()
.background(Color.gray)
.cornerRadius(5.0)
rememberForgotView()
Button(action: { self.logIn() })
{
loginButton()
}
Text("\(token)")
Spacer()
}.padding().navigationBarTitle("Log In")
}
}
func logIn() {
let newUser = User(context: self.managedObjectContext)
newUser.username = self.username
newUser.password = self.password
let parameters = ["username": "\($username)", "password": "\($password)"]
AF.request("http://myurl", method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON
{
response in
let statusCode = response.response?.statusCode
switch response.result {
case .success(let value):
if let json = value as? [String: Any] {
print(json["Result"] as? Int)
}
case .failure(let error):
print(error)
}
}
}
struct LogInView_Previews: PreviewProvider {
static var previews: some View {
LogInView()
}}
struct loginButton: View {
var body: some View {
VStack {
Text("Log In")
.bold()
.foregroundColor(.white)
.padding(.vertical)
.frame(width: 320)
.background(Color.blue)
.cornerRadius(10.0)
.padding(.top, 20)
}
}}
struct rememberForgotView: View {
var body: some View {
HStack {
Image(systemName: "circle")
.imageScale(.large)
.foregroundColor(.gray)
Text("Remember me")
.font(.footnote)
.foregroundColor(.gray)
Spacer()
Text("Forgot password")
.font(.footnote)
.foregroundColor(.blue)
.bold()
}
}}
Можете ли вы помочь мне понять:
- как вернуть токен и как сохранить его в моей базе данных
- как скомпилировать «параметры let» со строками из текстового поля
- распечатать возможные ошибки с меткой в пользовательском интерфейсе
Большое вам спасибо! Прошло всего несколько недель с использованием Xcode, поэтому я стараюсь изо всех сил, но не могу найти решение этой проблемы. Если вам известны ресурсы об Alamofire, поделитесь ими.