无法检索 Realm Xamarin iOS 中已保存对象的某些属性值

问题描述 投票:0回答:1

我是 Realm 和 Xamarin.iOS 的新手,我有点困惑为什么我保存的对象在 Realm 中检索一次后没有被持久化。下面是我用来保存用户输入的主要对象。

public class UserSelections : RealmObject
{
  public UserSelections() {}

  [PrimaryKey]
  public string FormId { get; private set; }
  public bool IsEntry { get; set; }
  public Class1 ClassNo1 { get; set; }
  public Class2 ClassNo1 { get; set; }
  public string Site { get; set; }
  public string State { get; set; }
}

请注意,

Class1
Class2
也继承了
RealmObject

这是遇到问题的场景:

  1. 在用户回答第一组问题后首次初始化

    UserSelections
    对象并将其保存在领域中。

    
    realm.Write(() => 
    {
       var newData = new NewData(); // Inherits the RealmObject
       realm.Add(newData);
       var userSelections = new UserSelections
       {
         FormId = "123TEST",
         IsEntry = true,
         ClassNo1 = userEntryClass1,
         ClassNo2 = userEntryClass2,
         Site = "Some site",
         State = "Some state here"
       };
    
       realm.Add(userSelections);
    }
    
    
  2. 同步数据时,检索存储的数据并将其设置在要发送到 API 的类中。该

    UserData
    类不会继承
    RealmObject

    var completedForms = realm.All<UserSelections>().Where(frm => frm.Completed).ToList();
    var dataToAPI = new List<UserData>();
    foreach(var form in completedForms) 
    {
        UserData data = new UserData
        {
           FormId = form.FormId,
           IsEntry = form.IsEntry,
           IntegerProperty1 = form.ClassNo1.Id, 
           IntegerProperty2 = form.ClassNo2.Id, 
           Site = form.Site,
           State = form.State
        }
        dataToAPI.Add(data);
    }
    
  3. 将数据发送到API。在这里通过抛出异常来复制发送失败

  4. 再次检索对象,重复步骤 2。然而,

    form.ClassNo1
    form.ClassNo2
    已经是空对象了。

我不太确定为什么它应该再次检索它时却没有持续存在。我已经将 Realms 包更新到最新版本,但它仍然无法再次检索已保存的数据。我是否需要重新保存才能使其持续存在?

xamarin.ios realm
1个回答
0
投票

解决问题的方法是(1)将 Realms 升级到最新版本,以及(2)将

EmbeddedObject
类继承到我正在处理的类。

非常感谢您的帮助!

© www.soinside.com 2019 - 2024. All rights reserved.