Я получаю исключение с сообщением "Невозможно привести объект типа 'Foundation.NSNull' к типу 'Foundation.NSDictionary'", когда я пытаюсь go просмотреть все данные в строке var thisListAllData = snapshot.GetValue<NSDictionary>();
В моей базе данных есть два разных узла. А именно, maindata
и data
, и они выглядят так:
Что я пытаюсь сделать, это взять данные из maindata
, а затем проверьте данные, указанные внутри, во всех данных, а затем извлеките их, чтобы меня могли видеть и другие пользователи.
public static async Task Fetch()
{
AppDataClass.ShareLst = new List<Post>();
if (AppDataClass.auth.CurrentUser == null)
return;
bool done = false;
foreach (SharedData anyCoord in AppDataClass.ShareD)
{
string PName = anyCoord.PostName;
string ownerUid = anyCoord.PostOwner.UId;
AppDataClass.MaindataNode
.GetChild("SharedPosts")
.GetChild(ownerUid)
.GetChild(PName)
.ObserveSingleEvent(DataEventType.Value, (snapshot) =>
{
var thisListAllData = snapshot.GetValue<NSDictionary>();
List<FeedList> itemsInList = new List<FeedList>();
if (thisListAllData.ValueForKey((NSString)"Post") != null)
{
if ((thisListAllData.ValueForKey((NSString)"Post")).IsKindOfClass(new ObjCRuntime.Class(typeof(NSDictionary))))
{
NSDictionary itemsOfListVals = (NSDictionary)NSObject.FromObject(thisListAllData.ValueForKey((NSString)"Post"));
for (int i = 0; i < (int)itemsOfListVals.Values.Length; i++)
{
NSDictionary eachItemVals = (NSDictionary)NSObject.FromObject(itemsOfListVals.Values[i]);
var fetchedItemName = (NSString)eachItemVals.ValueForKey((NSString)"feedSport");
var fetchedItemTime = (NSString)eachItemVals.ValueForKey((NSString)"locTime");
itemsInList.Add(new FeedList
{
SportName = fetchedItemName,
LocTime = DateTime.Parse(fetchedItemTime)
});
}
}
}
Post thisList = new Post
{
PostName = PName,
PostOwner = anyCoord.PostOwner,
ListItems = itemsInList
};
AppDataClass.ShareLst.Add(thisList);
done = true;
});
}
while (!done)
{
await Task.Delay(50);
}
}