我正在尝试在 swift 中创建一个单例类,但出现错误 “无法创建带有元素标签的单元素元组”
我不明白。
class GroupObject {
// we want the group object to be a singleton
var name: String
var id: Int
var groupJsonObject: JSON
init(groupJsonObject: JSON){
self.groupJsonObject = groupJsonObject
self.id = groupJsonObject["id"].int!
self.name = groupJsonObject["name"].string!
}
class var sharedInstance : GroupObject {
struct Static {
static let instance : GroupObject = GroupObject(groupJsonObject: JSON) // this is the problem line.
}
return Static.instance
}
}
最佳答案
问题是您不能将参数传递给单例。您的单例实现不知道 JSON
指的是什么。
如果您希望它成为单例,则必须将 groupJsonObject
与共享实例的初始化分开进行初始化。例如:
class GroupObject {
var name: String!
var id: Int!
var groupJsonObject: JSON! {
didSet {
id = groupJsonObject["id"].int!
name = groupJsonObject["name"].string!
}
}
static let sharedInstance = GroupObject() // btw, this is a more concise syntax for declaring a singleton
}
然后,当你想初始化这些属性时,你可以这样做:
GroupObject.sharedInstance.groupJsonObject = json
关于swift - 如何使用 init 变量在 swift 中创建单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34534794/