通过目录中的键访问值<;system.String、system.Object>;-C#统一字典
这段代码侦听my Firebase中的任何更改,并在检测到更改时激发HandleListChange():通过目录中的键访问值<;system.String、system.Object>;-C#统一字典,c#,dictionary,firebase,unity3d,firebase-realtime-database,C#,Dictionary,Firebase,Unity3d,Firebase Realtime Database,这段代码侦听my Firebase中的任何更改,并在检测到更改时激发HandleListChange(): void SetRoomListListener() { FirebaseDatabase.DefaultInstance .GetReference ("Rooms") .ValueChanged += HandleListChange; } 我的HandleListChange()目前看起来像这样: void HandleListChange(
void SetRoomListListener()
{
FirebaseDatabase.DefaultInstance
.GetReference ("Rooms")
.ValueChanged += HandleListChange;
}
我的HandleListChange()
目前看起来像这样:
void HandleListChange(object sender, ValueChangedEventArgs args)
{
if (args.DatabaseError != null) {
Debug.LogError (args.DatabaseError.Message);
return;
}
// We got the new data
foreach (DataSnapshot room in args.Snapshot.Children)
{
string roomName = room.Key;
foreach (KeyValuePair<string, Object> info in room.Value)
{
Debug.Log (info);
}
}
}
void HandleListChange(对象发送方,ValueChangedEventArgs参数)
{
if(args.DatabaseError!=null){
Debug.LogError(args.DatabaseError.Message);
返回;
}
//我们得到了新的数据
foreach(args.Snapshot.Children中的DataSnapshot房间)
{
字符串roomName=room.Key;
foreach(房间中的KeyValuePair信息。值)
{
Debug.Log(info);
}
}
}
调试room.Key
根据需要提供房间的名称,而room.Value
返回某种字典->Dictionary2[System.String,System.Object]
。我想使用键访问该字典中的值,比如说room.value[“size”]
,但是我从foreach循环中得到了这个错误foreach语句无法对object类型的变量进行操作,因为它不包含GetEnumerator的定义,或者无法访问。我尝试过很多其他的方法,但都没能成功。这是我第一次同时使用目录和firebase,所以我不知道发生了什么。用于Unity的Firebase API非常小,互联网也帮不了什么忙。我想这个问题更可能发生在C方,而不是Unity或Firebase。如何使用该目录中的键访问我的值?谢谢。从中可以看出,DataSnapshot.Value
返回一个对象
,该对象可能封装了不同的本机类型
如果您确定room.Value
包含一个字典,那么您应该强制转换它,然后像C#中的任何字典一样访问它的成员:
var dictionary=(IDictionary)room.Value;
var exampleValue=字典[“大小”];
var dictionary = (IDictionary<string, object>)room.Value;
var exampleValue = dictionary["size"];