0
我目前有一個firebase項目,可以解析網絡中的數據。c#和unity3d中的有序字典FIREBASE
所有的數據都下來了,但我想要扭轉結果的順序。
我在我的獲取數據的方法去下面的代碼
public class ExampleItemModel{
public string name;
public string score;
public string level;
public int iconIdx1, iconIdx2, iconIdx3;
}
那麼實現這一目標: -
public void GetDataFromFireBase(string reference, Action<ExampleItemModel[]> onDone){
FirebaseDatabase.DefaultInstance
.GetReference(reference).OrderByChild("score")
.GetValueAsync().ContinueWith(task => {
if (task.IsFaulted) {
// Handle the error...
print("Error: " + task.Exception);
}
else if (task.IsCompleted) {
DataSnapshot snapshot = task.Result;
// Do something with snapshot...
var items = snapshot.Value as Dictionary<string, object>;
int count = items.Count;
var results = new ExampleItemModel[count];
int i = 0;
foreach(var item in items){
results[i] = new ExampleItemModel();
//print("items = " + item);
var values = item.Value as Dictionary<string, object>;
if (reference == "scores"){
print("values count =" + values.Count);
foreach(var value in values){
if(value.Key == "name"){ results[i].name = "" + value.Value;}
if(value.Key == "score"){ print("Score = " + value.Value); results[i].score = "" + value.Value;}
if(value.Key == "level"){ results[i].level = "" + value.Value;}
}
i++;
}
onDone(results);
}
});
}
香港專業教育學院試過如下: -
在火力規則我已經套裝
".indexOn":"score",
"score": {
".indexOn": ".value"
}
我也嘗試添加的代碼
results = results.OrderByDescending(x => x.score);
onDone(results);
以下行,但我得到以下錯誤
嚴重性:「錯誤」 消息:「無法隱式轉換類型‘System.Linq.IOrderedEnumerable’以 'ExampleItemModel []'[大會-CSHARP]」 在: '137,14' 來源: ''
會有人請能夠幫助
感謝
個
這通常是通過對具有倒數值的新字段建立索引來完成的。看到這個答案:https://stackoverflow.com/a/34158197/4816918 – Jeff