我是 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
。
这是遇到问题的场景:
在用户回答第一组问题后首次初始化
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);
}
同步数据时,检索存储的数据并将其设置在要发送到 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);
}
将数据发送到API。在这里通过抛出异常来复制发送失败
再次检索对象,重复步骤 2。然而,
form.ClassNo1
和form.ClassNo2
已经是空对象了。
我不太确定为什么它应该再次检索它时却没有持续存在。我已经将 Realms 包更新到最新版本,但它仍然无法再次检索已保存的数据。我是否需要重新保存才能使其持续存在?
解决问题的方法是(1)将 Realms 升级到最新版本,以及(2)将
EmbeddedObject
类继承到我正在处理的类。
非常感谢您的帮助!