【问题标题】:Realm Xamarin.Forms can't find existing item领域 Xamarin.Forms 找不到现有项目
【发布时间】:2018-08-08 14:09:05
【问题描述】:

我正在努力在 Xamarin.Forms Android 和 iOS 应用程序上实现具有同步领域的 领域平台。使用下面的代码,我可以创建/连接到应该存储数据的领域实例,并且可以向实例添加新对象。但是,无论我做什么,我都无法得到 ​​p>

realm.Find<Person>("ID-1");

返回任何东西。在try() catch() 中,该行返回:“对象引用未设置为对象的实例”。使用 Realm Studio 我可以看到所做的更改,并且我看到我在应用程序上寻找的对象存在。

此外,如果我尝试查询元素,无论我指定哪个参数,我总是得到 0。

型号:

public class Person : RealmObject
{
    [PrimaryKey]
    public string Id { get; set; }

    public int Number {get; set;}

    public string DeviceName { get; set; }
    public string DeviceId { get; set; }

    public IList<SoundSnapModel> SnapList { get;}

    public Person()
    {

    }
}

代码 sn-p:

 var credentials = Credentials.Nickname("Thanos", false);
 var InstanceId = "instance-name";
 var serverURL = new Uri("realms://" + InstanceId + "/~/testRealm3");
 var AUTH_URL = new Uri("https://" + InstanceId + "/auth");
 var user = await User.LoginAsync(credentials, AUTH_URL);

 var configuration = new QueryBasedSyncConfiguration(serverURL, user);
 var realm = Realm.GetInstance(configuration);

 realm.Write(() => realm.Add(new Person { Id = "ID-1", Number = 123,     
 DeviceId = "something", DeviceName = "something" }));  // works without issue
 Debug.WriteLine("Added new person!!");

 var elements = realm.All<Person>().Where(e => e.Number > 100);
 Debug.WriteLine("Found the object list: " + elements.Count() + "  "); // returns 0

 var currentObject = realm.Find<Person>("ID-1"); // triggers the exception mentioned above

【问题讨论】:

    标签: c# xamarin xamarin.forms realm realm-mobile-platform


    【解决方案1】:

    QueryBasedSyncConfiguration 是在我离开 Realm Xamarin 团队后添加的,但我认为它不起作用,因为您没有完全配置它。

    查看docs 很明显,您必须设置订阅

    默认情况下,基于查询的同步领域不包含数据。相反,客户端应用程序必须选择或订阅它想要同步的服务器上相应领域中的哪个数据子集。

    您没有像他们描述的那样创建订阅:

    var subscription = realm.All&lt;Person&gt;().Where(e =&gt; e.Number &gt; 100).Subscribe();

    我相当确定,即使您是在本地创建数据,它实际上在本地并不存在,直到您拥有包含它的订阅。

    【讨论】:

      猜你喜欢
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      相关资源
      最近更新 更多