2015-06-24 73 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 [....] 
相關問題