NCMB の検索:IDで検索を行い、それがあるか否かを返す関数は?
ニフティクラウドモバイルバックグラウンドとUnityです。
固有のIDを使って得点を記録します。
既に得点がある場合には問題ないのですが
初回の処理「そのIDが無かった場合」の処理がうまくいきません
例
太郎 10点
花子 8点
ここに太郎を11点で上書きするのは平気ですが
「三郎 9点」 を足そうとするとエラーになります。
追加したい処理は 「IDが既存になかった場合にそのIDで新しく登録を行う」です。
または 「IDで検索を行い、それがあるか否かを返す」関数が知りたいです。
サンプルを参考に書いた次のコードですが条件が「エラーがなかった」であり
「検索結果があっか」になっていないのが問題だと思うからです。
/// <summary>
/// NCMBへスコアを記録 スコア(float) ゲーム名
/// </summary>
public static void saveScore(float score,string game){
Debug.Log ("score:"+score+",game:"+game);
string id = PlayerPrefs.GetString (RegisterID.UID, "");//固有のIDを呼び出す
NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject> (game);
query.WhereEqualTo ("id",id);//id をキーに検索
query.FindAsync ((List<NCMBObject> objList ,NCMBException e) => {
//検索成功したら
if (e == null) {
Debug.Log ("検索OK");
objList[0]["Score"] = score;
objList[0].SaveAsync();
}else{
//検索結果がない場合、次のログを吐き出さずにエラーになる Debug.Log("saveScore:err");
NCMBObject obj = new NCMBObject(game);
obj["id"] = PlayerPrefs.GetString(RegisterID.UID,"");
obj["Name"] = PlayerPrefs.GetString(RegisterID.NAME,"");
obj["Score"] = score;
obj.SaveAsync();
}
});
}