我正在尝试在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
}
}
答案 0 :(得分:5)
问题是你无法将参数传递给单例。您的单例实现不知道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
答案 1 :(得分:1)
如果您的“singleton”应该在实例化时传递一些数据,它将如何获取该数据?它何时/何时可用?
我认为你根本不想要一个单身人士;您希望可以从应用程序的不同点访问使用JSON数据创建的实例。在这种情况下,选择一些“主控制器”,在那里创建,然后根据需要将其传递给其他控制器。