SSブログ

UnityでNCMBのデータストアからcreateDateを取得する方法 [Unity開発]

こんにちは。
大学で卒業制作を指導していて、留学生君が製作中の案件で上手く行かない相談に来ました。簡単だろうと思って、ささっと済まそうとすると、アレレ?なぜだろう。やはり上手く行かない。持ち帰って調べて解決しました。

まず案件は、NiftyCloudMobileBackend(ニフティクラウドモバイルバックエンド)に置いたデータストア(レコードが入ったテーブルですね。)から単純に全件データをコンソールに表示するというもの。

以前にハイスコア管理を行なったアプリも作って運用している経験もあったので、コレ知ってる!と思ってやってみると、データの型がエラーを起こしているような反応が出ました。

不具合のソースコードは以下の通り。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using NCMB;
public class DataFetchAction : MonoBehaviour {
    void Start () {
        NCMBQuery query = new NCMBQuery("Attend");
        query.FindAsync((List fetchData, NCMBException err) => {
            if (err != null) {
                Debug.Log("Error:" + err);
            } else {
                foreach (NCMBObject stored in fetchData) {
                    string p = System.Convert.ToString(stored["Person"]);
                    int r = System.Convert.ToInt32(stored["Room"]);
                    string c = System.Convert.ToString(stored["createDate"]);
                    Debug.Log(p + " : " + r + "-room : " + c );
                }
            }
        });
    }
}

文字列型と整数型は無事に格納したのに、日付でコケていることが判明。
調べると、日付「CreateDate」はユーザーが定義したデータフィールドではないので、ちょっと特殊な日付型。取得の方法が違うことがわかりました。なので、以下のように修正。
                foreach (NCMBObject stored in fetchData) {
                    string p = System.Convert.ToString(stored["Person"]);
                    int r = System.Convert.ToInt32(stored["Room"]);
                    string c = System.Convert.ToString(stored.CreateDate);
                    Debug.Log(p + " : " + r + "-room : " + c );
                }

はい、上手く行きました。
留学生の彼にも大学のサーバーを通じて教えてあげました。超・真夜中だったけど。

タグ:Unity NCMB C#
nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。
別ファイルの情報をiFrameにするとi..|- ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。