SwiftData проверяет, существует ли запись — проблема в режиме редактированияIOS

Программируем под IOS
Ответить
Anonymous
 SwiftData проверяет, существует ли запись — проблема в режиме редактирования

Сообщение Anonymous »

Перед сохранением записи в SwiftData я проверяю, существует ли такое имя. Он отлично работает в режиме добавления, но не работает в режиме редактирования. Это связано с тем, что в режиме редактирования выполняется то же самое условие, которое блокирует обновление записи.
func saveCategory() {
if categories.contains(where: { $0.name == category.name }) {
DispatchQueue.main.async {
toast = Toast(style: .error, message: "Category already exists.", width: 400)
}
} else {
modelContext.insert(category)
try! modelContext.save()
toast = Toast(style: .success, message: "Category Saved.", width: 210)
let task = DispatchWorkItem {
dismiss()
}

DispatchQueue.main.asyncAfter(deadline: .now() + (toast?.duration ?? 1), execute: task)
}
}
< /code>
Модель категории: < /p>
@Model
final class Category {
@Attribute(.unique) var name: String
....
}
< /code>
Один из способов, которым я подумал об этом, - сохранить переменную для режима редактирования и передать ее из предыдущего представления. Но я не думаю, что это лучший способ, и, честно говоря, не сработает.
Есть ли лучший способ? Могу ли я использовать уникальный атрибут и как?

Подробнее здесь: https://stackoverflow.com/questions/793 ... -edit-mode
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»