我试图解码我的JWT令牌,并获得在我的视图中显示的信息。问题是,当我打印我的Jwt令牌时,我可以看到用户数据,但是当我从我的jwt令牌模型创建实例时,我无法获得数据,它没有显示anything.Where,我有错误的想法吗?
这个JWT令牌解码和模型
struct Token : Decodable {
let jwtString : String = ApplicationVariables.token
func getJwtToken(){
do {
let newJWT = try JWT<MyJWTClaims>(jwtString: jwtString)
print("JWT TOKEN İS : \(newJWT.claims.data?.first_name)")
} catch {
print("ERROR!")
}
}
}
class MyJWTClaims : Claims,ObservableObject {
@Published var data : JWTData?
}
class JWTData : ObservableObject,Codable {
@Published var first_name : String?
@Published var last_name : String?
@Published var email : String?
@Published var user_verified : Bool?
}这就是我试图展示JwtToken数据的地方;
struct ProfileTopView : View {
@ObservedObject var jwtTokenData = MyJWTClaims()
var body: some View {
ZStack{
Image(uiImage: #imageLiteral(resourceName: "Rectangle 69"))
.resizable()
.frame(width: UIScreen.main.bounds.width * 1, height: UIScreen.main.bounds.height * 0.15, alignment: .center)
Image(uiImage: #imageLiteral(resourceName: "Vector-8"))
.resizable()
.frame(width: UIScreen.main.bounds.width * 0.22, height: UIScreen.main.bounds.height * 0.10, alignment: .center)
.offset(x: 0, y: UIScreen.main.bounds.height * 0.048)
Text(jwtTokenData.data?.first_name ?? "Test")
.font(.system(size: 14))
.bold()
.offset(x: 0, y: UIScreen.main.bounds.height * 0.14)
}.ignoresSafeArea(.all)
}
}发布于 2021-04-27 12:37:55
您应该返回使用解码的结果填充的实例。在下面的代码中,我将直接返回初始化对象,您必须像已经在做的那样首先解码,然后填充值。
import SwiftUI
protocol Token {
func getJwtToken() -> JWTData
var jwtString:String{get set}
}
class TokenDecoder : Token {
var jwtString: String = "myToken"
var jwtObj:JWTData?
func getJwtToken() -> JWTData{
// Perform JWTdecoding and return object
JWTData(first_name:"foo",last_name:"bar",email:"abc@xyz.com",user_verified:false)
}
}
class MyJWTClaims : ObservableObject {
@Published var data : JWTData?
init(decoder:Token) {
self.data = decoder.getJwtToken()
}
}
struct JWTData:Decodable {
var first_name : String?
var last_name : String?
var email : String?
var user_verified : Bool?
}
struct ProfileTopView : View {
@ObservedObject var jwtTokenData = MyJWTClaims(decoder: TokenDecoder())
var body: some View {
ZStack{
Image("CDF")
.resizable()
.frame(width: UIScreen.main.bounds.width * 1, height: UIScreen.main.bounds.height * 0.15, alignment: .center)
Image("Home")
.resizable()
.frame(width: UIScreen.main.bounds.width * 0.22, height: UIScreen.main.bounds.height * 0.10, alignment: .center)
.offset(x: 0, y: UIScreen.main.bounds.height * 0.048)
Text(jwtTokenData.data?.first_name ?? "Test")
.font(.system(size: 14))
.bold()
.offset(x: 0, y: UIScreen.main.bounds.height * 0.14)
}.ignoresSafeArea(.all)
}
}https://stackoverflow.com/questions/67282437
复制相似问题