/// <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); }
/// <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); }
/// <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)); }