所以,我正在创建一个Singleton类,如下所示,我在这个类中需要很少的实例变量,这样任何团队成员都可以访问实例变量并获取值。为此,我需要在开始时将这些实例变量初始化为某个值。 但我得到一个编译错误,说“在调用中缺少参数'doValueExists'参数”。
我到底做错了什么?
class ABC_Util {
private var doesValueExists: Bool
private var arrValues: NSMutableArray?
class var sharedInstance: ABC_Util {
struct ABC_UtilSingleton {
static let instance = ABC_Util()
}
return ABC_UtilSingleton.instance
}
init(doesValueExists: Bool, arrValues: NSMutableArray?) {
self.doesValueExists = self.checkValueExists()
self.arrValues = self.getArrayOfValues()
}
//method
internal func checkValueExists() -> Bool {
}
//method
internal func getArrayOfValues() -> NSMutableArray? {
}
}
答案 0 :(得分:1)
您对ABC_Util的初始化程序声明为:
init(doesValueExists:Bool, arrValues:NSMutableArray?) {
因此你不能说
static let instance = ABC_Util()
表达式ABC_Util()
对应于没有参数的初始化程序,并且您没有这样的初始化程序。你必须说:
static let instance = ABC_Util(doesValueExists:someBool, arrValues:someArray)
(当然有适当的值)。
答案 1 :(得分:0)
您必须使用初始化程序才能初始化变量。
class ABC_Util {
private var doesValueExists:Bool
private var arrValues:NSMutableArray?
class var sharedInstance: ABC_Util
{
struct ABC_UtilSingleton
{
static let instance = ABC_Util(doesValueExists: true, arrValues: nil)
}
return ABC_UtilSingleton.instance
}
init(doesValueExists:Bool, arrValues:NSMutableArray?) {
self.doesValueExists = doesValueExists
self.arrValues = arrValues
}
//method
internal func checkValueExists()-> Bool
{
return true
}
//method
internal func getArrayOfValues()-> NSMutableArray?
{
return nil
}
}
我建议您将单身声明更改为建议的语法
static let sharedInstance: ABC_Util = ABC_Util(doesValueExists: true, arrValues: nil)
答案 2 :(得分:0)
您可以使用如下。
类ABC_Util {
private var doesValueExists:Bool = false
private var arrValues:NSMutableArray?
class var sharedInstance: ABC_Util {
struct ABC_UtilSingleton {
static let instance = ABC_Util(doesValueExists: false, arrValues: ["a", "b", "c"])
}
return ABC_UtilSingleton.instance
}
init(doesValueExists:Bool, arrValues:NSMutableArray?) {
self.doesValueExists = self.checkValueExists()
self.arrValues = self.getArrayOfValues()
}
//method
internal func checkValueExists()-> Bool{
return self.doesValueExists
}
//method
internal func getArrayOfValues()-> NSMutableArray?{
return arrValues
}
}
答案 3 :(得分:0)
我得到了解决方案,当我尝试这个时,工作得很好!
类ABC_Util {
var doesValueExists:Bool = false
var arrValues:NSMutableArray? = nil
class var sharedInstance: ABC_Util
{
struct ABC_UtilSingleton
{
static let instance = ABC_Util()
}
return ABC_UtilSingleton.instance
}
init() {
self.doesValueExists = self.checkValueExists()
self.arrValues = self.getArrayOfValues()
}
//method
internal func checkValueExists()-> Bool
{
//return true/false
}
//method
internal func getArrayOfValues()-> NSMutableArray?
{
//return array/nil
}
}