Help us understand the problem. What is going on with this article?

NiftyCloud mBaaS + Swift データストアへの読み書き

More than 3 years have passed since last update.

NiftyCloud mBaaSをSwiftから使う情報がほとんどないので、自分でやってみたメモ書きです。
こちら↓のiOSアプリで使ってみました。
OnWorkってこんなアプリです

0.環境

 Xcode 8.2 + Swift 3
 iOS SDK Version2.0.0

Swift3用に書き直しました
 

1.準備

 1) iOS用SDKを組み込む
 2) bridge-headerを準備

//  NCMB-bridge-header.h

#ifndef NCMB_bridge_header_h
#define NCMB_bridge_header_h

#import "NCMB/NCMB.h"

#endif /* NCMB_bridge_header_h */

 3 ) AppDelegateにアプリケーションキー設定を追加

Swift
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        NCMB.setApplicationKey("YOUR_APPKEY",
            clientKey: "YOUR_CLIENTKEY")

        return true
    }

2.データストアからの読み出し

下記のクラスからcompanyIDをキーにしてcompanyNameを読みだして返す関数の例です。
クラス名:Company
フィールド:companyID 会社のID
フィールド:companyName 会社の名前

Swift3
/// get name of the company
///
/// - parameter companyID: company ID with String
/// - returns: companyName with String
func getCompanyName(_ companyID:String) -> String {
    var companyName:String = ""

    let query = NCMBQuery(className: "Company")
    query?.whereKey("companyID", equalTo: companyID)
    var results:[AnyObject] = []
    do {
        results = try query!.findObjects() as [AnyObject]
    } catch  let error1 as NSError  {
        print("\(error1)")
        return companyName
    }
    if results.count > 0 {
        let result = results[0] as? NCMBObject
        companyName = result?.object(forKey:"companyName")  as? String ?? ""
    }
    return companyName

}

3.データストアへの追加

下記のクラスへレコードを書き込む(追加する)関数の例です。
クラス名:Company
フィールド:companyID 会社のID
フィールド:companyName 会社の名前

  • companyInfoはcompanyID, companyNameを含む構造体として定義してあります
Swift3
/// add company record to Company Class
///
/// - parameter : companyInfo
/// - returns:  nothing
func addCompany(_ company:companyInfo) {

    let companyObject = NCMBObject(className: "Company")

    companyObject?.setObject(company.companyName,forKey:"CompanyName")
    companyObject?.setObject(company.companyID,forKey:"companyID")

    companyObject?.saveInBackground({(error) in
        if error != nil {print("Save error : ",error!)}
    })

}

4.データストアの更新

下記のクラスからcompanyIDをキーにして登録済みのレコードのcompanyNameを更新する関数の例です。
クラス名:Company
フィールド:companyID 会社のID
フィールド:companyName 会社の名前

  • companyInfoはcompanyID, companyNameを含む構造体として定義してあります

* フィールドのデータを初期化したい場合はnilを設定すれば良いらしいです。
 管理画面から見ると(undefined)には戻りませんが等価の扱いということです。
 ただし、位置情報フィールドは初期化不可。

参照: https://github.com/NIFTYCloud-mbaas/UserCommunity/issues/272

Swift3
/// update Company record of Company Class
///
/// - parameter : companyInfo
/// - returns:  nothing
func updateCompany(_ company:companyInfo) {

    let query = NCMBQuery(className: "Company")
    query?.whereKey("companyID", equalTo: company.companyID)
    var results:[AnyObject] = []
    do {
        results = try query!.findObjects() as [AnyObject]
    } catch  let error1 as NSError  {
        print("\(error1)")
        return
    }
    if results.count > 0 {
        let obj = results[0] as! NCMBObject

        obj.setObject(company.companyName,forKey:"CompanyName")

        obj.saveInBackground({(error) in
            if error != nil {print("Save error : ",error!)}
        })

    }
}

5.その他

ご意見ご要望等あればコメントください。
ファイルストアと会員管理については随時投稿予定です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした