gpt4 book ai didi

ios - 在类之间存储和传递数据的正确方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:33:25 25 4
gpt4 key购买 nike

我有一个 Users 类和 Login 类(在单独的文件中),其中数据首先在 Login 类中初始化和获取,然后存储在 Users 类中以供将来在其他类中使用。要使用 Users 类中的变量,看来我必须不断地初始化它,这会重置类中的值。如何在不不断初始化的情况下获取变量?

现在是什么:

Login.swift 中接收到数据 -> 数据传递给 Users.swift -> 无法在 ViewController.swift 中显示 Users.swift 中存储的数据

我在找什么:

在Login.swift中接收数据 -> 数据传递给Users.swift -> 在ViewController.swift中显示存储在Users.swift中的数据

ViewController 中的代码

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var usernameLabel: UILabel!

// var usernameLabelText = String()

let dataObj = Users(Name: "", Email: "", Id: "", ProfilePicture: "", Username: "")

var usernameLabelText: String? {
return String(dataObj!.username)
}

override func viewDidLoad() {
usernameLabel.text = "Welcome \(usernameLabelText)"
print("This is the \(dataObj!.username)")
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}


}

Login.swift 中的代码

import Foundation
import Alamofire
import SwiftyJSON
class Login {

var userName:String!
var passWord:String!

init(userName : String, passWord : String) {

let parameters = [
"username": userName,
"password": passWord
]

Alamofire.request(.POST, "http://anyapi.com", parameters: parameters)
.responseJSON { response in
print(response.request)
print(response.response)
print(response.data)
print(response.result)
if let result = response.result.value {
print("Did receive JSON data: \(result)")
let value = JSON(result)
if let api_key = value["api_token"].string {
print("The token is " + api_key)
} else{
print("error parsing api token")
}
//pass data to Users class
_ = Users.init(Name: value["name"].string, Email: value["email"].string, Id: value["id"].string, ProfilePicture: value["profile_picture"].string, Username: value["username"].string)
}
else {
print("JSON data is nil.")
}


}

}
}

Users.swift 中的代码

import Foundation
import Alamofire
import SwiftyJSON

class Users {
private var _name: String!
private var _email: String!
private var _userId: String!
private var _profilePicture: String!
private var _username: String!

var particulars: [String] = []

var name: String {
_name = particulars[0]
return _name
}

var email: String {
_email = particulars[1]
return _email
}

var userId: String {
_userId = particulars[2]
return _userId
}

var profilePicture: String {
_profilePicture = particulars[3]
return _profilePicture
}

var username: String {
_username = particulars[4]
return _username
}


required init?(Name: String?, Email: String?, Id: String?, ProfilePicture: String?, Username: String?) {
particulars += ["\(Name)"]
particulars += ["\(Email)"]
particulars += ["\(Id)"]
particulars += ["\(ProfilePicture)"]
particulars += ["\(Username)"]
}

}

最佳答案

  1. 在 View Controller 中创建一个用户类型变量。

    var usrData : Users?
  2. 当您实例化 View Controller 时,将变量分配给已经初始化的用户类。

    let view_controller_to_present = blahblah as! View Controller;<br>
    view_controller_to_present.usrData = DataFromRequest;<br>
    presentViewController(_ viewControllerToPresent: view_controller_to_present,animated flag: true, completion completion: nil);
  3. 访问数据。

关于ios - 在类之间存储和传递数据的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37107125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com