示例#1
0
 /// <summary>
 /// クエリにマッチするオブジェクトを取得を行います。<br/>
 /// 通信結果を受け取るために必ずコールバックを設定を行います。
 /// </summary>
 /// <param name="callback">  コールバック</param>
 public void FindAsync(NCMBQueryCallback <T> callback)
 {
     if (callback == null)
     {
         throw new ArgumentException("It is necessary to always set a callback.");
     }
     this.Find(callback);
 }
示例#2
0
        /// <summary>
        /// クエリにマッチするオブジェクトを取得を行います。<br/>
        /// 通信結果を受け取るために必ずコールバックを設定を行います。
        /// </summary>
        /// <param name="callback">  コールバック</param>
        public void FindAsync(NCMBQueryCallback <T> callback)
        {
            if (callback == null)
            {
                throw new ArgumentException("It is necessary to always set a callback.");
            }

            new AsyncDelegate(delegate {
                this.Find(callback);
            }).BeginInvoke((IAsyncResult r) => {
            }, null);
        }
示例#3
0
        /// <summary>
        /// 同期用の検索メソッド。FindeAsyncで呼び出される。またNCMBObjecとのFetchAllAsyncで扱う。
        /// </summary>
        internal void Find(NCMBQueryCallback <T> callback)
        {
            string url = _getSearchUrl(this._className); //クラス毎のURL作成

            url += WHERE_URL;                            //「?」を末尾に追加する。
            //条件データの作成
            Dictionary <string, object> beforeJsonData = _getFindParams();

            url = _makeWhereUrl(url, beforeJsonData);      //URLの結合
            ConnectType type = ConnectType.GET;            //メソッドタイプの設定

            NCMBDebug.Log("【url】:" + url + Environment.NewLine + "【type】:" + type);
            //通信処理
            NCMBConnection con = new NCMBConnection(url, type, null, NCMBUser._getCurrentSessionToken());

            con.Connect(delegate(int statusCode, string responseData, NCMBException error) {
                NCMBDebug.Log("【StatusCode】:" + statusCode + Environment.NewLine + "【Error】:" + error + Environment.NewLine + "【ResponseData】:" + responseData);

                Dictionary <string, object> resultObj;
                List <T> resultList         = new List <T> ();
                ArrayList convertResultList = null;
                //中でエラー処理いるかも
                try {
                    if (error == null)
                    {
                        resultObj         = MiniJSON.Json.Deserialize(responseData) as Dictionary <string, object>;
                        convertResultList = _convertFindResponse(resultObj);
                        foreach (T obj in convertResultList)
                        {
                            resultList.Add(obj);
                        }
                    }
                } catch (Exception e) {
                    error = new NCMBException(e);
                }

                Platform.RunOnMainThread(delegate {
                    callback(resultList, error);
                });

                return;
            });
        }
        /// <summary>
        /// yield return で待機可能なFindAsync
        /// </summary>
        /// <param name="ncmbquery"></param>
        /// <param name="callback"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static CustomYieldInstruction YieldableFindAsync <T>(this NCMBQuery <T> ncmbquery, NCMBQueryCallback <T> callback = null) where T : NCMBObject
        {
            var isComplete = false;

            ncmbquery.FindAsync((objects, error) =>
            {
                if (callback != null)
                {
                    callback(objects, error);
                }
                isComplete = true;
            });
            return(new WaitUntil(() => isComplete));
        }