今回はiOS SDKを使いつつ、既存のTodoアプリのデータ保存をmBaaSに置き換える方法を紹介します。元にしたTodoアプリはSwiftで簡単なTODOアプリを作ってみよう - Qiitaです。
iOS SDKをインストールする
iOS SDKのインストールについては前回の記事を参考にしてください。この記事と同じように cocoapods-keys
を使っています。
NCMBを初期化する
初期化は AppDelegate.swift
で行います。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. NCMB.setApplicationKey(keys.applicationKey , clientKey: keys.clientKey) return true }
データの追加を置き換える
元々あった var TodoKobetsunonakami = [String]()
は不要なのでコメントアウトします。
// var TodoKobetsunonakami = [String]()
そして追加するをタップした時の処理を置き換えます。
let obj = NCMBObject(className: "todoClass") obj?.setObject(TodoTextField.text!, forKey: "todo") obj?.saveInBackground({(err) in if err != nil { } else { self.performSegue(withIdentifier: "toList", sender: nil) } })
データの保存は非同期処理になるので、保存した後で画面遷移を行うようにしています。
データを読み込む
ViewController.swift
では初期表示時にデータを読み込みます。これは画面が戻ってきた時にも使われます。
override func viewDidLoad() { super.viewDidLoad() let query = NCMBQuery(className: "todoClass") query?.findObjectsInBackground({(objects, err) in if err != nil { } else { self.todos = objects as! [NCMBObject] self.todosView?.reloadData() } }) }
ViewController
では二つの変数を定義しておきます。 todosView
はTodoを表示するTableView、そしてtodosはmBaaSから返ってきたデータを保存しておく変数です。
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { @IBOutlet weak var todosView: UITableView! var todos = [NCMBObject]() // 省略 }
mBaaSからのデータ取得は非同期なので self.todosView?.reloadData()
を使って表示を更新しておきます。
データを表示する
データの表示はさほど変わりませんが、mBaaSの場合は object メソッドでデータを取り出す必要があります。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let TodoCell : UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "todoCell", for: indexPath) TodoCell.textLabel!.text = (self.todos[indexPath.row] as! NCMBObject).object(forKey: "todo") as! String return TodoCell }
まとめ
ここまでの処理でTodoアプリのデータ保存をmBaaSに置き換えられました。次回以降、これをベースにしてさらにmBaaSらしい機能を追加していきます。
今回のソースコードは goofmint/NCMB-Swift-iOS-Todo にアップしてあります。実装時の参考にしてください。