Как я могу исправить нечетную структуру дизайна при прохождении наблюдаемого объекта модели в качестве привязки?IOS

Программируем под IOS
Ответить
Anonymous
 Как я могу исправить нечетную структуру дизайна при прохождении наблюдаемого объекта модели в качестве привязки?

Сообщение Anonymous »

В моем приложении я отображаю комментарии, созданные пользователем в списке. Когда пользователь делает Swipeaction в строке комментариев, он может запустить документ , где возник комментарий, нажимая кнопку :

Код: Выделить всё

                    Button
{
onPresentCommentInDocument(commentSource, commentSource.passages, commentSource.document)
}
label:
{
Image(systemName: "document")
}
где комментарии, Code>, Passing и Document - все @model объекты в SwiftData, которые можно увидеть. Кроме того, отрывок - это выделенный текст в документе, который они основали с комментария.

Код: Выделить всё

onPresentCommentInDocument:
{
commentSource, document, passages in

self.commentSourceToEdit = commentSource
self.commentSourceDocumentToPresent = document
self.commentSourcePassagesToEdit = passages
})
, где self.commentsourcetoedit , self.commentsourcementtopresent , self.commentsourcepassagestoedit все объявлены как необязательные @state Properties. Они передаются в другую структуру с именем DocumentControllerView , которая управляет запуском документов в моем приложении (и они объявляются как @Binding Properties в DocumentControllerview ):

Код: Выделить всё

private var documentToPresent: Binding
{
Binding(get:
{
if self.commentSourceToEdit != nil && self.commentSourcePassagesToEdit != nil,
let commentSourceDocumentToPresent = self.commentSourceDocumentToPresent
{
commentSourceDocumentToPresent
}
else
{
self.interiorDocumentToPresent
}
},
set:
{
newValue in

if (newValue == nil)
{
self.commentSourceDocumentToPresent = nil
self.commentSourceToEdit = nil
self.commentSourcePassagesToEdit = nil
self.interiorDocumentToPresent = nil
}
})
}
< /code>
documentToPresent
запустит документ in .fullscreencover . Это будет самостоятельно. Interiordocumenttopresent , если это документ , который создается или выбран из DocumentControllerview или self.commentsourcementtopresent Если это свойства из выбранного комментария, как обсуждалось. self.commentsourcetoedit , self.commentsourcepassagestoedit снова в качестве необязательного @bindings в другую структуру, где пользователь может добавить или удалить отрывок, если это необходимо.

Код: Выделить всё

if let commentSourcePassagesToEditBinding = Binding(self.$commentSourcePassagesToEdit)
{
commentSourcePassagesToEditBinding.wrappedValue.append(passageToEdit)
self.commentSourceToEdit?.passages?.append(passageToEdit)
}
< /code>
I have to append to the binding so when I reference it throughout the structure it is up to date and also append to the array through its parent object so it will save and update in the model.
These feels off to me and I'm wondering if there is a better way to do it. I have tried passing these properties (commentSourceToEdit
, Commentsourcepassagestoedit ) только как VARS, а не привязки. Поскольку они являются модельными объектами и наблюдаемыми, они обновляются просто хорошо, и проблема в том, что я не могу установить их в NIL в документе вычисленное свойство, когда документ отклоняется. Но просто обновление привязки не сохранит изменения в модели, поэтому я должен добавить дважды, что для меня странно.

Подробнее здесь: https://stackoverflow.com/questions/797 ... ct-as-a-bi
Ответить

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

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

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

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

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