gpt4 book ai didi

ios - 在 Controller Swift 之间传递对象

转载 作者:可可西里 更新时间:2023-11-01 00:52:55 25 4
gpt4 key购买 nike

我有一个以登录页面开头的 Storyboard。我有一个像这样的用户类

class User {
// Properties
var firmCode : String
var firmId : String
var userId : String

// Default Initializer
init() {
self.firmCode = ""
self.firmId = ""
self.userId = ""

}

// Defult Initializer with prams
init(firmCode: String, firmId: String, userId: String) {
self.firmCode = firmCode
self.firmId = firmId
self.userId = userId
}


}

我在登录页面生成一些值,我可以用这些值创建我的用户对象。

现在我想使这个对象成为全局对象,并在所有场景中使用这个用户对象。

如何将这个对象传递给其他场景?例如,我想将这个值与我的对象一起传递给像这样的嵌入静态 TableView Controller

enter image description here

注意:嵌入 Controller 有标签栏 Controller 有关系吗?我想我需要使用我的委托(delegate)文件?

编辑:

现在我已经像这样创建了我的全局对象:

// test value
let firmId = "Company Id"

// Creating user object without user class declaration
NSUserDefaults.standardUserDefaults().setObject(firmId, forKey: "testFirmId")

并尝试像这样获取我的对象:

// Creating user variable in other scene by globally
let getValue : AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("testFirmId")

// checking
println(getValue!)

并完成,在 termanal 上返回我的值。所有工作到此为止。

但现在该值作为 AnyObject 返回给我,我需要将其转换为 String 以像这样应用:

someLabel.text = getValue!

最佳答案

你可以使用 NSUserDefaults 就像你可以这样存储你的对象一样:

NSUserDefaults.standardUserDefaults().setObject(YourObject, forKey: "YouKey")

之后您可以在任何场景中访问它,例如:

let yourObject: AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("YouKey")

希望对你有帮助。

编辑:

NSUserDefaults 受限于它可以处理的类型:NSDataNSStringNSNumber NSDateNSArrayNSDictionary。因此,无法保存任何 Swift 对象或结构。

来自 Apple NSUserDefaults 文档:

A default object must be a property list, that is, an instance of (or for collections a combination of instances of): NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary. If you want to store any other type of object, you should typically archive it to create an instance of NSData.

如果您正在使用 NSUserDefaults,那么您可以直接存储您的实例,如下所示:

NSUserDefaults.standardUserDefaults().setObject(test, forKey: "firmCode")
NSUserDefaults.standardUserDefaults().setObject(test, forKey: "firmId")
NSUserDefaults.standardUserDefaults().setObject(test, forKey: "userId")

你不需要模型类。

关于ios - 在 Controller Swift 之间传递对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31022832/

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