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にアプリケーションキー設定を追加
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 会社の名前
/// 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を含む構造体として定義してあります
/// 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
/// 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.その他
ご意見ご要望等あればコメントください。
ファイルストアと会員管理については随時投稿予定です。