快速语言的新手。我想从单例类的字典中存储我的登录响应。每当我想要那些数据时,我想在单例类中从字典中重用它。请找我的错误。在此,我附上了我的示例代码。
My SingleTon Class
class MarblesSingleton: NSObject {
class var sharedInstance:MarblesSingleton
{
struct Singleton
{
static let instance = MarblesSingleton()
}
return Singleton.instance
}
var provisionalDataDict:NSDictionary!
override init() {
super.init()
self.provisionalDataDict = nil
}
}
let singletonClass = MarblesSingleton()
登录后,我将这个响应添加到单身类的字典中,像这样,
singletonClass.provisionalDataDict = jsonData
在另一个类中,我想使用像这样的单例类的数据,
m_CountryTextField.text = NSString(format: "%@", singletonClass.provisionalDataDict.valueForKey("country") as NSString)
我的问题是:我因致命错误而崩溃。
fatal error: unexpectedly found nil while unwrapping an Optional value
答案 0 :(得分:1)
首先,您应该执行tkanzakic
编写的使用单例的内容。然后你必须检查你的字典是否有效:
if var unwrapped_Dic = singletonClass.provisionalDataDict {
m_CountryTextField.text = unwrapped_Dic.valueForKey("country") as NSString
}
如果您使用选项,您应始终检查强制解包是否成功。
答案 1 :(得分:0)
我会做这样的事情:
class DataManager {
struct Static {
static var token : dispatch_once_t = 0
static var instance : DataManager?
}
class var instance: DataManager {
dispatch_once(&Static.token) { Static.instance = DataManager() }
return Static.instance!
}
init(){
assert(Static.instance == nil, "Singleton already initialized!")
}
var userId = "defaultId"
var password = "defaultPassword"
}
以后您可以通过DataManager.Instance.userId访问它们 或设置为其他值DataManager.Instance.userId =" newUserId"
如果你真的想要,你也可以在单例类中创建一个Dictionary变量。
希望有所帮助!