[英]How to set NSDictionary in SingleTon class in swift language
我是新手,可以快速使用语言。 我想将来自字典的登录响应存储在单例类中。 每当我想要那个数据时,我都想从单例类的字典中重用它。 请找出我的错误。 我附上我的示例代码。
我的SingleTon课程
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
首先,您应该做tkanzakic
编写的使用单例的内容。 然后,您必须检查您的字典是否有效:
if var unwrapped_Dic = singletonClass.provisionalDataDict {
m_CountryTextField.text = unwrapped_Dic.valueForKey("country") as NSString
}
如果使用可选组件,则始终应检查强制展开是否成功。
我会做这样的事情:
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变量。
希望对您有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.