如何将 piker 的值保存到 Realm db?

How to save piker's value to Realm db?

我正在使用 Realm,我的示例类似于 this @BenBishop 的示例。我向我的 PersonPage 添加了一个是/否选择器,我试图将选择器的选定值保存到我的数据库中。有人可以帮我吗?谢谢!

这并不是真正的 Realm 问题,因为该示例只是在内部使用 Realm 进行存储。它的大部分代码是通用 C# Xamarin 代码。

作为快速总结,您需要

  1. AddEditPersonViewModel.cs
  2. 中添加一个属性
  3. 更新 AddEditPersonViewModel.Init 以加载新的 属性
  4. PersonPage.xaml
  5. 中添加一个映射到 属性 的选择器
  6. Person.cs 中添加匹配的 属性 以存储该值
  7. 更新 IDBService.SavePerson 以允许传递新的 属性
  8. 更新 RealmDBService.SavePerson 以将新 属性 复制回领域

详细:

// step 1 & 2
public class AddEditPersonViewModel : INotifyPropertyChanged
{
...
// added property
    private int superPower;

    public int SuperPower {
        get {
            return superPower;
        }
        set {
            superPower = value;
            PropertyChanged(this, new PropertyChangedEventArgs("SuperPower"));
        }
    }
...
    public void Init (string id)
    {
    ...
        SuperPower = Model.SuperPower;



// step 3 - in PersonPage.xaml
        Text="{Binding LastName}" />
      <Picker SelectedIndex="{Binding SuperPower}">
        <Picker.Items>
          <x:String>Flight</x:String>
          <x:String>Super Strength</x:String>
          <x:String>Ordinariness</x:String>
        </Picker.Items>
      </Picker>
    </StackLayout>


// step 4 - in Person.cs
  public class Person : RealmObject
  {
  ...
      public int SuperPower { 
          get; 
          set;
      }


// step 5 in IDBService.cs
    public interface IDBService
    {
        bool SavePerson (string id, string firstName, string lastName, int SuperPower);


// step 6 in RealmDBService.cs
  public class RealmDBService : IDBService
  {
  ...
      public bool SavePerson (string id, string firstName, string lastName, int superPower)
    {
        try {
            RealmInstance.Write (() => {
                var person = RealmInstance.CreateObject<Person> ();
                person.ID = id;
                person.FirstName = firstName;
                person.LastName = lastName;
                person.SuperPower = superPower;
            });