Objective-C
Swift

NiftyCloud(MBaaS)のiOSクイックスタートをObjective-CからSwiftに書き換えてみた

More than 3 years have passed since last update.


はじめに

Nifty CloudのMBaaSを利用してみようとクイックスタートを少し触ってみました。

http://mb.cloud.nifty.com/doc/quickstart_ios.html

ただ、サンプルがObjective-Cだったので、Swiftに書き換えてみました。

Objective-Cも、Swiftも初心者故、書き方がなんともよくわからないが、そのへんはご了承下さい。


Objective-C(サンプル)


AppDelegate.m

[NCMB setApplicationKey:@"YOUR_APPLICATION_KEY" clientKey:@"YOUR_CLIENT_KEY"];

NCMBQuery *query = [NCMBQuery queryWithClassName:@"TestClass"];
[query whereKey:@"message" equalTo:@"test"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (error == nil) {
if ([objects count] > 0) {
NSLog(@"[FIND] %@", [[objects objectAtIndex:0] objectForKey:@"message"]);
} else {
NSError *saveError = nil;
NCMBObject *obj = [NCMBObject objectWithClassName:@"TestClass"];
[obj setObject:@"Hello, NCMB!" forKey:@"message"];
[obj save:&saveError];
if (saveError == nil) {
NSLog(@"[SAVE] Done");
} else {
NSLog(@"[SAVE-ERROR] %@", saveError);
}
}
} else {
NSLog(@"[ERROR] %@", error);
}
}];



Swiftに書き換える


  • クイックスタートのNCMB.frameworkはBuild Phasesから登録しておきます。


  • NCMB.frameworkをSwiftから利用できるようにヘッダファイルを作成しておきます。


XXXXXXX-Bridging-Header.h

#import <NCMB/NCMB.h>



XXXXXXXは、任意で問題無いと思います。(Defaultで、作成されているんではないかと思います。)

以下、参考にさせていただきました。

http://qiita.com/skatata/items/1facd024d239b9545031



  • AppDelegate.swiftのdidFinishLaunchingWithOptionsで以下のコードに書き換えます。


AppDelegate.swift


NCMB.setApplicationKey("<YOUR_APPLICATION_KEY>",
clientKey: "<YOUR_CLIENT_KEY>")
var query: NCMBQuery = NCMBQuery(className: "TestClass")
query.whereKey("message", equalTo: "test")
query.findObjectsInBackgroundWithBlock({(NSArray objects, NSError error) in
if (error == nil) {
if(objects.count > 0)
{
var msg: AnyObject? = objects[0].objectForKey("message")
var msgStr: String = msg as NSString
Logger.debug("[FIND] \(msgStr)")
} else {
var saveError : NSError? = nil
var obj : NCMBObject = NCMBObject.objectWithClassName("TestClass")
obj.setObject("Hello, NCMB!", forKey: "message")
obj.save(&saveError)

if(saveError == nil){
Logger.debug("[SAVE] Done.")
} else {
Logger.error("[SAVE ERROR] \(saveError)")
}
}
} else {
Logger.error(error.localizedDescription)
}
})



まとめ

一応動いている感じはしますが、Arrayあたりの書き方は少し勉強し直します。