我有一个视图模型,它继承了NSObject
,因为它是我的UICollectionViewDataSource
我想通过依赖注入将服务传递给它。
我还是出错了
未在super.init调用中初始化属性'self.chatService'
class ChatQuestionsViewModel: NSObject {
fileprivate var chatService: ChatService
convenience init(chatService: ChatService = ChatService()) {
self.init()
self.chatService = chatService
}
private override init() {
super.init()
}
}
它似乎集中在super.init()
行上。
如何初始化该课程?我不确定自己在做什么错。
答案 0 :(得分:1)
在这种情况下,您不能使用便捷初始化程序。初始化程序的规则规定您必须保证所有存储的属性都已初始化。
便利的初始化方法只是为了方便。这意味着使用它们创建对象的实例一定不是不必要。但是,如果代码仅使用您的不便init
,则不会初始化chatService
。 (不必担心您的不便init
是私人的;这无济于事。)
固定结果:
class ChatQuestionsViewModel: NSObject {
fileprivate var chatService: ChatService
init(chatService: ChatService = ChatService()) {
self.chatService = chatService
super.init()
}
}