Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jiro/e45f50c0098a3e7f7656db333529e4de to your computer and use it in GitHub Desktop.
Save jiro/e45f50c0098a3e7f7656db333529e4de to your computer and use it in GitHub Desktop.

イベント

題材

📝 課題0

  • 題材アプリのインストールをする

以下のコマンドでインストールできる

git clone -b workshop https://github.com/wantedly/Cerberus.git
cd Cerberus
carthage bootstrap --platform iOS
open Cerberus.xcodeproj

MVVMの要素

  • Model
    • Event
    • (Time)
  • View
    • CalendarViewController
  • View Model
    • CalenderViewModel

📝 課題1

  • Eventの配列を流してみる
    • CalenderViewModelevents プロパティのストリーム (出力用) に流す
    • Eventの配列 → [Event(.normal("勉強会"), from: Date(), to: Date(timeIntervalSinceNow: 60*60))]

📝 課題2

  • ボタンのタップを伝搬させる
    • CalendarViewControllerviewDidLoad でバイディングの記述を追加  - CalenderViewModelcalendersButtonItemDidTap プロパティのストリーム (入力用) に流す

📝 課題3

  • 取得したカレンダーのイベントを伝搬させる
    • CalenderViewModelcalendersButtonItemDidTap プロパティのストリームのイベントを加工する
    • CalenderService を利用
      • 入力 → 権限取得 → カレンダー選択 → イベント取得 → 出力

📝 発展課題

  • カレンダー情報の読み込みエラー時にポップアップを表示する
  • 選択されたカレンダーをUserDefaultsに保存する

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment