Redux: лучшая практика (используя Swift) - PullRequest
0 голосов
/ 27 декабря 2018

Мне нужен совет по наилучшей практике с Redux в приложении для iOS.

Я пытаюсь освоить этот архитектурный паттерн, но я не использую подход Redux + Reactive.Просто ReSwift + простой декларативный код.

Проблема, с которой я сталкиваюсь, является базовой.Хранение UIImage.Насколько я видел в некоторых уроках, не рекомендуется хранить UIImage как собственность государства.Следовательно, рекомендуется сохранить путь к изображению.

Чтобы получить путь, нам нужно сохранить изображение локально на диск.Изображение взято из медиа-библиотеки телефона.Итак, локальное сохранение требует времени (это делается синхронно, потому что я не хочу добавлять асинхронные задачи для простейшего экрана с одним UIImageView).

К счастью, контроллер средства выбора изображений предоставляет нам изображениеurl:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
    let imageURL = info[.imageURL] as? URL
    picker.dismiss(animated: true, completion: nil)
    store.dispatch(DidPickImageAction(imageURL: imageURL))
}

Я могу использовать его, не переписывая изображение в файл, что решает проблему.

Но есть также возможность создать новое изображение с помощью камеры.В этом случае информационный словарь не имеет .imageURL, что снова приводит меня к необходимости записать изображение в файл.

Это заставляет меня хотеть просто хранить UIImage в состоянии, но так как это против Reduxправила, я спрашиваю:

Какова лучшая практика работы с изображениями в архитектуре Redux?

Любая помощь будет очень ценится.

1 Ответ

0 голосов
/ 27 декабря 2018

Неполно хранить изображения напрямую.

Наилучший подход, который вы можете сделать.

  1. Запишите свое изображение в каталог документов.
  2. Сохранить имя изображения в основных данных
  3. Получить имя изображения с основными данными и получить изображение с каталогом документов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...