MVVM (Model View ViewModel) + Data Binding + Singleton + Generic API Calls

MVVMパターンを使ったサンプルプロジェクト Closure(Data Binding)メソッドを用いて、ViewとViewModelを結合する

特徴

  • UIKit (SwiftUIでは無い)
  • MVVM アーキテクチャ
  • Data Binding (RX - リアクティブプログラミング)
  • Singleton Design Pattern (生成するインスタンスの数を1つに制限するデザインパターン)
  • URLSession - Generic Api calls - Networking API (RestFull API専用)
  • JSONDecoder によるデコード
  • 画像ダウンロード - Kingfisher Library (Webから画像をダウンロードしてキャッシュするSwiftライブラリ)
  • Swift Package Manager - SPM (CocoaPodsでも良い)
  • Closure, Completion, Typealias, Enum
  • Detailed use of UIStackView, UITableView, UITableViewCell XIB (StoryBoardを使わずカスタマイズされたリストUIを実装)
  • Inheritance - Final Keyword, Init()
  • Memory Management (ガベージコレクションなど)
  • Light and Dark Mode (iOS13がサポートするダークモードへの対応)

## 動画サンプル

2023-03-28.4.58.55.mov

サンプルのダミーJSON

https://dummyjson.com/products

{
    "products": [
        {
            "id": 1,
            "title": "iPhone 9",
            "description": "An apple mobile which is nothing like apple",
            "price": 549,
            "discountPercentage": 12.96,
            "rating": 4.69,
            "stock": 94,
            "brand": "Apple",
            "category": "smartphones",
            "thumbnail": "https://i.dummyjson.com/data/products/1/thumbnail.jpg",
            "images": [
                "https://i.dummyjson.com/data/products/1/1.jpg",
                "https://i.dummyjson.com/data/products/1/2.jpg",
                "https://i.dummyjson.com/data/products/1/3.jpg",
                "https://i.dummyjson.com/data/products/1/4.jpg",
                "https://i.dummyjson.com/data/products/1/thumbnail.jpg"
            ]
        }
    }
}