Xcode Alamofire用户登录SwiftUI CoreData

Xcode Alamofire用户登录SwiftUI CoreData,xcode,swiftui,alamofire,Xcode,Swiftui,Alamofire,我正在尝试开发一个登录页面,以便使用Alamofire访问服务器。发送用户名和密码时,服务器将返回令牌。我需要使用textfield让用户插入用户名和密码,然后使用CoreData将用户名、密码和令牌保存在数据库中 import SwiftUI import Alamofire import SwiftyJSON struct LogInView: View { @Environment(\.managedObjectContext) var managedObjectContext @En

我正在尝试开发一个登录页面,以便使用Alamofire访问服务器。发送用户名和密码时,服务器将返回令牌。我需要使用textfield让用户插入用户名和密码,然后使用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()
    }
}}
你能帮助我理解:

  • 如何返回令牌以及如何将其保存在我的数据库中
  • 如何使用textfield中的字符串编译“let参数”
  • 使用UI中的标签打印最终错误
非常感谢你!使用Xcode仅仅几周时间,所以我尽力做到最好,但我无法找到解决这个问题的方法。 如果你知道阿拉莫菲尔的一些资源,请分享