Alamofire Userlogin SwiftUI CoreData - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь разработать страницу входа для доступа к серверу с помощью 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, поделитесь ими.

...