【问题标题】:Xamarin Forms with Firebase. Data retrival throwing System.InvalidCastException: 'Specified cast is not valid.'带有 Firebase 的 Xamarin 表单。数据检索抛出 System.InvalidCastException:“指定的转换无效。”
【发布时间】:2020-03-26 12:49:25
【问题描述】:

 public async Task<IEnumerable<Users>> GetAllUsers()
        {
               return (await firebase
              .Child("Users")
              .OnceAsync<Users>()).Select(item => new Users
              {
                  UserName= item.Object.UserName.ToString(),
                  Password = item.Object.Password.ToString(),
                  Role  = item.Object.Role.ToString()
              }).ToList();
        }

我是应用程序开发的初学者。从 Firebase 实时数据库中检索数据时出现上述错误。抓头4小时。请帮忙。

【问题讨论】:

标签: c# firebase xamarin firebase-realtime-database xamarin.forms


【解决方案1】:

您不必将其强制转换为String()。 Firebase 自行转换类型,当您将该对象推送到 Firebase 实时数据库时,它会在您将其拉回时自动分配正确的类型。去掉每个属性上的 ToString(),看看是否能解决问题。

public async Task<IEnumerable<Users>> GetAllUsers()
    {
           return (await firebase
          .Child("Users")
          .OnceAsync<Users>()).Select(item => new Users
          {
              UserName= item.Object.UserName,
              Password = item.Object.Password,
              Role  = item.Object.Role
          }).ToList();
    }

【讨论】:

  • 首先我尝试不进行强制转换。后来我尝试了铸造。两者都不工作
  • 这不起作用的唯一原因是您将完全不同的对象类型推送到您要拉回的对象类型。就像我在上面的评论中提到的,在原始问题中添加您的用户集合的屏幕截图。并且可能您想展示也将用户对象推送到 firebase 的方法。
猜你喜欢
  • 1970-01-01
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多