サーバー構築不要!スマートフォンアプリ向けの新クラウド

トップ >ドキュメント >SDKガイド(Android):オブジェクト操作

SDKガイド(Android)

ドキュメント内検索

オブジェクト操作

このドキュメントは更新されていません。
こちらから最新版をご覧ください。

NCMBObjectについて

ニフティクラウドmobile backendのデータストア機能はNCMBObjectを通じて利用します。
NCMBObjectはスキーマレスなJSON互換のkey-value形式のオブジェクトを扱うことができます。
オブジェクトの保存先はNCMBObjectの初期化時に指定したクラスで識別されます。

オブジェクトの保存

データストアのクラス名を指定して、NCMBObjectを作成します。
指定したクラスがデータストアに存在しない場合は、新規にクラスが作成されます。

NCMBObject obj = new NCMBObject("SaveObjectTest");
obj.put("key", "value");
obj.saveInBackground(new DoneCallback() {
    @Override
    public void done(NCMBException e) {
        if (e != null) {

            //エラー発生時の処理
        } else {

            //成功時の処理
        }
    }
});

オブジェクトの取得

NCMBObject obj = new NCMBObject("TestClass");
obj.setObjectId("getTestObjectId");
obj.fetchInBackground(new FetchCallback<NCMBObject>() {

    @Override
    public void done(NCMBObject object, NCMBException e) {
        if (e != null) {
            //エラー時の処理
        } else {
            //取得成功時の処理
        }
    }
});

オブジェクトの更新

NCMBObject obj = new NCMBObject("TestClass");
obj.setObjectId("updateTestObjectId");
obj.put("updateKey", "updateValue");
obj.saveInBackground(new DoneCallback() {
    @Override
    public void done(NCMBException e) {
        if (e != null) {

            //エラー時の処理
        }
    }
});

データの更新で利用できるメソッド

オブジェクトの値を更新する場合はputメソッドを利用しますが、
それ以外にもデータストアの値を更新できるメソッドがあります。

指定フィールドにある値を削除
obj.remove("key");

指定フィールドのインクリメント
obj.increment("incrementKey", 1); 

配列への要素追加
obj.addToList("list", Arrays.asList("value1", "value2")); 

配列への要素追加(同じ値は追加しない)
obj.addUniqueToList("list", Arrays.asList("value1", "value2"));

配列からの要素削除
obj.removeFromList("list", Arrays.asList("value1", "value2"));

これらのメソッドを利用したあと、オブジェクトの更新を行うまでは、
ローカルの値を取得すると設定されたオペランドのJSONObjectが返却されます。

オブジェクトの削除

obj.deleteObjectInBackground(new DoneCallback() {
    @Override
    public void done(NCMBException e) {
        if (e != null) {
            Assert.fail("delete object method should not raise exception:");
        }
    }
}); 

ポインタ

あるオブジェクトへのポインタを設定することができます。
ポインタ先のオブジェクトはobjectIdがセットされている(=保存済みである)必要があります。

NCMBObject pointerObj = new NCMBObject("pointerClass");
pointerObj.setObjectId("testObjectId");

//pointerObjへのポインタをpointerフィールドに設定する
obj.put("pointer", pointerObj);

リレーション

複数オブジェクトへのポインタを設定したい場合はリレーションを利用します。

NCMBObject pointerObj = new NCMBObject("pointerClass");
pointerObj.setObjectId("testObjectId");

NCMBObject obj = new NCMBObject("dataTypeClass");

//リレーションへの追加を設定する
obj.put("relation", NCMBRelation.addRelation(Arrays.asList(pointerObj)));

//リレーションからの削除が実行される
obj.save();

リレーションからの削除も可能です。

NCMBObject pointerObj = new NCMBObject("pointerClass");
pointerObj.setObjectId("testObjectId");

NCMBObject obj = new NCMBObject("dataTypeClass");

//リレーションからの削除を設定する
obj.put("relation", NCMBRelation.removeRelation(Arrays.asList(pointerObj)));

//リレーションからの削除が実行される
obj.save();

ACLの設定

ACLとは、各データやクラス単位で会員やロールごとのアクセス権限を設定するものです。
NCMBAclクラスを利用してaclを設定することが可能です。

//データの読み込み・検索のみ許可したNCBMAclを作成
NCMBAcl acl = new NCMBAcl();
acl.setPublicReadAccess(true);
acl.setPublicWriteAccess(false);

//オブジェクトにAclを設定
NCMBObject obj = new NCMBObject("SaveObjectTest");
obj.setAcl(acl);

お探しの内容が見つからなかった場合はユーザーコミュニティ もご活用ください。(回答保証はいたしかねます)
なお、 Expertプラン以上のお客様はテクニカルサポートにてご質問を承らせて頂きます。

推奨画面サイズ1024×768px以上

ページの先頭へ