如何从 SwiftUI View Init 中的现有数组创建新数组
How to create new array from existing array inside SwiftUI View Init
在下面的代码中,我试图创建一个名为 recordsPlusOne
的数组,其中包含 recordsViewModel
(recordsViewModel.records
) 中数组中的所有项目和一个需要的新记录在 RecordsView
中创建,但在 init()
中调用 recordsViewModel.records
时出现错误
如何创建一个新数组,其中包含需要在 RecordsView
的 init()
中创建的现有一加一记录中的所有项目?
代码:
struct RecordsView: View {
@ObservedObject var recordsViewModel: RecordsViewModel
private var recordsPlusOne: [Record] = []
init(){
let newRecord = Record()
recordsPlusOne = recordsViewModel.records // thows error 1
recordsPlusOne.append(newRecord)
}// thows error 2
var body: some View {
// some code to display the records
}
}
错误 1
Variable 'self.recordsViewModel' used before being initialized
错误 2
Return from initializer without initializing all stored properties
如果 recordsViewModel
将通过 init
个参数注入,则可以这样做,例如
init(vm: RecordsViewModel) { // << here !!
let newRecord = Record()
recordsPlusOne = vm.records // << pre-use !!
recordsPlusOne.append(newRecord)
recordsViewModel = vm // << initializing !!
}
在下面的代码中,我试图创建一个名为 recordsPlusOne
的数组,其中包含 recordsViewModel
(recordsViewModel.records
) 中数组中的所有项目和一个需要的新记录在 RecordsView
中创建,但在 init()
recordsViewModel.records
时出现错误
如何创建一个新数组,其中包含需要在 RecordsView
的 init()
中创建的现有一加一记录中的所有项目?
代码:
struct RecordsView: View {
@ObservedObject var recordsViewModel: RecordsViewModel
private var recordsPlusOne: [Record] = []
init(){
let newRecord = Record()
recordsPlusOne = recordsViewModel.records // thows error 1
recordsPlusOne.append(newRecord)
}// thows error 2
var body: some View {
// some code to display the records
}
}
错误 1
Variable 'self.recordsViewModel' used before being initialized
错误 2
Return from initializer without initializing all stored properties
如果 recordsViewModel
将通过 init
个参数注入,则可以这样做,例如
init(vm: RecordsViewModel) { // << here !!
let newRecord = Record()
recordsPlusOne = vm.records // << pre-use !!
recordsPlusOne.append(newRecord)
recordsViewModel = vm // << initializing !!
}