我已经有了待办事项列表应用程序的类描述,如下所示:
class TaskStore: ObservableObject {
@Published var tasks: Task = [
Task("Programm app"),
Task("Clean up apartment",
Task("Buy NY gifts")
Task("Decorate Christmas tree")
]
}
我想使用扩展名重新定义其初始化程序(而无需触摸先前的代码),以便能够从.json文件中读取已经存在的待办事项,或者默认情况下可以像下面这样初始化:
extension TaskStore {
var storedTasks: [Task]? {
// Code for downloading from .json file
}
init() {
if let storedTasks = let self.storedTasks {
self.tasks = self.storedTasks
}
}
}
问题是XCode编译器不允许在扩展名中放置便捷init()或指定的init(),因为类描述中未定义init()。
请帮助(重新)定义扩展名的init()。
您不能这样做。
扩展程序将新功能添加到现有的类,结构,枚举或协议类型。这包括扩展能力您无权访问原始源代码的类型(称为追溯建模)。扩展名类似于类别在Objective-C中。 (与Objective-C类别不同,Swift扩展确实没有名字。)
https://docs.swift.org/swift-book/LanguageGuide/Extensions.html