Использование вложенных форм в сочетании с Ecto.Multis и changesets

Swiftz уже предлагает Future, который является основным строительным блоком Promise. Будущее - это обещание, которое не может потерпеть неудачу (все термины здесь основаны на интерпретации Scala, , где Promise является монадой ).

https: // github. com / maxpow4h / swiftz / blob / master / swiftz / Future.swift

Надеюсь, что в какой-то момент мы сможем написать его в полной версии в стиле Скала (я могу написать это сам в какой-то момент; Конечно, другие PR будут приветствоваться, это не так сложно, если будущее уже на месте).

В вашем конкретном случае я, вероятно, создаю Result<[Book]> (на основе версии Александроса Салазара Result [/ д2]). Тогда ваша сигнатура метода будет:

class func fetchGenres() -> Future> {

Примечания

  • Я не рекомендую функции префикса с get в Swift. Это нарушит определенные виды совместимости с ObjC.
  • Я рекомендую развернуть весь путь до объекта Book, прежде чем возвращать результаты в качестве Future. Существует несколько способов, с помощью которых эта система может выйти из строя, и гораздо удобнее, если вы проверите все эти вещи, прежде чем обернуть их в Future. Переход к [Book] намного лучше для остальной части вашего кода Swift, чем передача NSArray.

0
задан Ege Ersoz 18 February 2019 в 06:10
поделиться

1 ответ

Вместо того, чтобы вводить свою собственную повторную реализацию для вставки нескольких вложенных / связанных записей в разные таблицы, вам, вероятно, лучше использовать то, что Ecto предоставляет из коробки: Ecto.Changeset.put_assoc/4 в User ' s changeset.

Он выполнит все проверки для вас и вернет неправильное значение changeset, если что-то пошло не так.

0
ответ дан Aleksei Matiushkin 18 February 2019 в 06:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: