Я разрабатываю простое приложение для расчета личных денежных доходов и потребления.
Я использую CORE DATA для сохранения моей модели.
Модели состоят из этого
CDCatalogWallet
var name: String
var ref: String
CDCatalogStateIncome
var name: String
var ref: String
CDDocumentIncome
var ref: String
var wallet: CDCatalogWallet (relationship has one)
var states_: CDDocumentIncomeState (relationship has many)
CDDocumentIncomeState
var cdCatalogStateIncome: CDCatalogStateIncome (relationship has one)
var document: CDDocumentIncome (relationship has one)
CDDocumentIncome hasMany -> CDDocumentIncomeState hasOne -> CDCatalogStateIncome Ошибка проявляется, когда мы нажимаем представление CDDocumentIncomeState.
Модель проста.
У CDDocumentIncome есть свойство отношения cdCatalogStateIncome (отношений много).
Мы открываем просмотр с помощью CDDocumentIncome и хотим добавить новый cdCatalogStateIncome к CDDocumentIncome.
Затем открываем вид с новым cdCatalogStateIncome.
На этом экране cdCatalogStateIncome имеет отношение к CDDocumentIncomeState.
Но вид не открывается. Консоль постоянно печатает сообщения
DocumentIncomeStateDetailView: @self changed.
DocumentIncomeStateDetailView: @self changed.
DocumentIncomeStateDetailView: @self changed.
DocumentIncomeStateDetailView: @self changed.
Также память увеличивается постоянно и очень быстро.
Я понимаю, что представление отображается постоянно. Но я не могу понять, в чем причина ошибки.
Полный код доступен на github.
Хорошо, я понимаю, что привязка предназначена для типа значения. Но у меня возникнет та же ошибка, если я буду использовать @State var id: NSManagedObjectId и передать эту переменную как привязку.
NSManagedObjectId — это класс. Известно, что State имеет утечку со ссылочными типами, а NSManagedObjectId не является типом значения.
Я попытался реализовать pass @State var ref: String to Binding. Результат тот же. Увеличение памяти.





Проблема была в старом Xcode. После обновления Xcode до версии 15.2 все проблемы исчезли.
В свой вопрос следует включить воспроизводимый пример, а не ссылку на GitHub, но вы используете слово Binding. Обратите внимание, что Binding предназначен для типов значений, а объект CoreData — это ObservableObject, а не тип значения.