2015-06-24 38 views
2

我有一个登录页面启动一个情节串连图板。我有一个User类这样控制器之间传递的对象夫特

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 
    } 


} 

我生成的登录页面的一些价值观,我可以创建使用这些值User对象。

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

如何把这个对象传递给其他的场景?例如,我想用我的对象这个值传递给一个嵌入静态表视图控制器这样

enter image description here

注:不要紧,嵌入控制器具有一个标签栏控制器?我想我需要使用我的委托文件?

编辑:

现在,我已经建立了我的全局对象是这样的:

// 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,我需要将其转换字符串申请这样的:

someLabel.text = getValue! 
+0

在单例共享实例类中创建用户对象,您可以在应用程序范围的任何位置使用该对象。阅读关于这一点。 – Mrunal

回答

4

您可以使用NSUserDefaults对于像您可以存储你的对象是这样的:

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

在此之后,你可以访问它在任何场景,如:

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

希望它会帮助你。

编辑:

NSUserDefaults被限制在它能够处理类型:NSDataNSStringNSNumberNSDateNSArray,和NSDictionary。因此不能保存Swift对象或结构体。

从Apple NSUserDefaults文档:

默认的对象必须是一个属性列表,即,(对集合或 的实例的组合)的一个实例:NSData的,的NSString, 的NSNumber, NSDate,NSArray或NSDictionary。如果要存储任何其他类型的对象,则通常应将其存档以创建一个NSData实例。

如果您使用的是NSUserDefaults,那么你可以直接存储您喜欢的实例如下所示:

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

你不需要为模型类。

+0

您能否看到我的更新请 – Mehmet

+0

好吧先让我测试一下 –

+0

检查我编辑的答案。 –

0
var user = User() 
self.user.firmCode = 1 

//将值分配给其他变量

//保存用户对象在作为NSUserDefaults的这样

User.saveUserObject(user) 

//功能对于保存用户

class func saveUserObject(user : User){ 
let userKey = "UserData \(user.userID)" 
NSUserDefaults.standardUserDefaults().setObject(data, forKey: userKey) 
} 

//从NSUserDefaults获取用户对象

class func getUserObject(userIDValue : NSNumber) -> User? { 
    let userKey = "UserData \(userIDValue)" 
    if let data = NSUserDefaults.standardUserDefaults().objectForKey(userKey) as? NSData { 
     return data as? User 
    } 
    return nil 
} 
+0

嘿,你在哪里学会做?我对swift没有太多的了解!!任何文档都有帮助吗? – Ztarlight

+0

我已经为“User”模块创建了Modal类,你可以从这个链接获得想法https://www.weheartswift.com/object-oriented-programming-swift / –

0

如果你真的想要一个全局用户对象,只需在全局范围内创建它即意味着不在任何范围内。 Tadaa!您可以从任何地方访问它。

var globalUser = User() 

// This is where your 'normal code' starts 
class [....] 
相关问题