User inputted TextField Array from Grid

I have a grid view that has two columns, one that is static that will be populated with names, and the second that is user inputed numbers. I have two arrays, one full of the names, and one that is initialized to 0s for all numbers. I have it displayed as:

                let lastRowIndex: Int = viewModel.names.count - 1
                LazyVGrid(columns: columns, alignment: .center, spacing: 0){
                    Group {
                    ForEach((0...lastRowIndex), id: \.self) { index in
                        TextField("indiv value", value: $viewModel.individualValues[index], format: .number)

This displays perfectly to start, two columns, one with every name in the array and one initialized to 0. But when I try to make any change to the number, as soon as I click off of the input it returns to 0. How do I set this up so that the numbers are saved in the individualValues array, displayed properly, and able to be used later?