So I’ve got the following code, which seems to work, and I’m wondering if there is a better, cleaner way to approach adding/editing elements in an array.
var category: Category
var idx: Int = -1
switch mode {
case .add:
category = Category()
case .edit(let _category):
category = _category
idx = categoryViewModel.categories.firstIndex(of: _category) ?? idx
}
category.name = categoryName
category.icon = "category-\(categoryIdx)"
category.color = colors[colorIdx]
switch mode {
case .add:
categoryViewModel.categories.append(category)
case .edit:
categoryViewModel.categories[idx] = category
}
I understand I’m not checking idx
to make sure it’s not -1
. I’m not concerned about that part right now. It’s the overall approach I’m looking for thoughts on.
Thanks!
You must log in or # to comment.
It feels like what you’re trying to do would be better using a dictionary with the index being the element hash instead of a linear array.