tomlokhorst / Picker

Pick a value using a promise

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Picker

Pick a value using a promise, supporting user cancellation and system interruption.

Usage

class LanguageListController : UIViewController {
  private let picker = Picker<Language>()
  var result: PickerPromise<Language> { return picker.promise }

  func selectLanguage(_ language: Language) {
    picker.complete(with: language)
  }

  func cancelButtonTapped() {
    picker.cancel()
  }
}

// Elsewhere:

func pickLanguage() -> PickerPromise<Language> {
  let languageList = LanguageListController()
  self.present(languageList, animated: true, completion: nil)

  return languageList.result
    .then { [weak languageList] _ in
      languageList?.dismiss(animated: true, completion: nil)
    }
}


// When using async/await:

var result: Language? { get async { try? await picker.promise.map(\.value).asyncValue } }

Releases

  • 2.0.1 - 2021-11-13 - Add async .value properties
  • 2.0.0 - 2021-11-13 - Depend on Promissum 7
  • 1.0.0 - 2021-02-21 - Depend on Promissum 6
  • 0.4.0 - 2020-08-22 - Depend on Promissum 5, minimum iOS 10
  • 0.3.1 - 2020-08-08 - Add platform versions
  • 0.3.0 - 2019-06-10 - Swift 5.1 update
  • 0.2.0 - 2018-08-21 - Swift 4.2 update
  • 0.1.0 - 2017-06-05 - Initial public release
  • 0.0.0 - 2017-04-24 - Initial private version for project at Q42

Licence & Credits

Picker is written by Q42 and available under the MIT license, so feel free to use it in commercial and non-commercial projects.

About

Pick a value using a promise

License:MIT License


Languages

Language:Swift 100.0%