2015-06-30 44 views
0

我想我以前的問題太含糊。讓我再嘗試一次。如何在swift中創建全局對象?

我想通過創建一個單例來保存用戶信息。 經過一些研究,這就是我所理解的。

 Class UserInfo { 
      var userFirstName: String? 
      var userLastName: String? 
      /*I'll add all other variables here*/ 

    } 


let sharedInfo = UserInfo() 

我在正確的道路上嗎?

回答

1

編輯:對於雨燕1.2及更高版本(感謝威爾M)

class UserInfo { 
    static let sharedUserInfo = UserInfo() 
    var firstName: String? 
    var lastName: String? 
} 

對於斯威夫特早於1.2

線沿線的東西:

class UserInfo 
{ 
    // Singleton Setup 

    private static var info: UserInfo? 

    class func sharedUserInfo() -> UserInfo 
    { 
     if self.info == nil 
     { 
      self.info = UserInfo() 
     } 

     return self.info! 
    } 

    // Class properties 

    var firstName: String? 
    var lastName: String? 
} 

let user = UserInfo.sharedUserInfo() 
user.firstName = "Fred" 
user.lastName = "Smith" 

我也建議製作確定一個單身人士真的是你想要的,因爲根據你的使用方式,你可能會遇到一些使用線程的競爭條件。

+0

新swift中的單例比它容易得多,而且非常安全。 [鏈接](http://stackoverflow.com/questions/24024549/dispatch-once-singleton-model-in-swift) –

+0

這太好了。謝謝! – mbottone

+0

謝謝@mbottone,但不知何故,如果我使用你的第一個例子,它給了我錯誤說:「靜態屬性只允許在結構和枚舉;使用'類'聲明類屬性」 而當我用'class' '靜態'它給我錯誤說:「userInfo不能構造,因爲它沒有可訪問的初始化器」 請幫忙:( – user2832411