Edited at

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

More than 1 year has 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.その他

ご意見ご要望等あればコメントください。

ファイルストアと会員管理については随時投稿予定です。