Мне нужно обновить структуру, но эта структура нуждается в длинном выражении, которое можно найти в моем viewController:
let theMessage:Message? = self.messageSections.first(where: { $0.date == DateDMY(fromNSDate:msg.date) })?
.msgs.first(where: { $0 == msg })
Я хочу изменить одно свойство этой структуры, но не его копию, я хочу обновить его "где он есть", то есть в messageSections []. Msgs []
Проблема здесь в том, что если я попробую этот код после приведенного выше:
theMessage.status = .NOT_SENT
Будет обновлена только локальная копия, а не настоящая в messageSections []. Msgs []. Поэтому, когда я перезагружаю свой collectionView, ничего не меняется.
Я мог бы сделать
self.messageSections.first(where: { $0.date == DateDMY(fromNSDate:msg.date) })?
.msgs.first(where: { $0 == msg }).status = .NOT_SENT
Но если мне приходится несколько раз манипулировать этим свойством в своей функции, я не хочу переписывать все выражение каждый раз. Так что я ищу что-то вроде в C:
let theMessage:Message?* = &self.messageSections.first(where: { $0.date == DateDMY(fromNSDate:msg.date) })?
.msgs.first(where: { $0 == msg })
if(theMessage != NULL)
theMessage->status = .NOT_SENT
В других вопросах я видел, что можно использовать & перед аргументом и inout перед именем параметра, но это только для вызова функций. Я ищу способ создания псевдонима для большого выражения при воздействии на переменную, просто чтобы не переписывать его каждый раз.