如何将 piker 的值保存到 Realm db?
How to save piker's value to Realm db?
我正在使用 Realm,我的示例类似于 this @BenBishop 的示例。我向我的 PersonPage 添加了一个是/否选择器,我试图将选择器的选定值保存到我的数据库中。有人可以帮我吗?谢谢!
这并不是真正的 Realm 问题,因为该示例只是在内部使用 Realm 进行存储。它的大部分代码是通用 C# Xamarin 代码。
作为快速总结,您需要
- 在
AddEditPersonViewModel.cs
中添加一个属性
- 更新
AddEditPersonViewModel.Init
以加载新的 属性
- 在
PersonPage.xaml
中添加一个映射到 属性 的选择器
- 在
Person.cs
中添加匹配的 属性 以存储该值
- 更新
IDBService.SavePerson
以允许传递新的 属性
- 更新
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;
});
我正在使用 Realm,我的示例类似于 this @BenBishop 的示例。我向我的 PersonPage 添加了一个是/否选择器,我试图将选择器的选定值保存到我的数据库中。有人可以帮我吗?谢谢!
这并不是真正的 Realm 问题,因为该示例只是在内部使用 Realm 进行存储。它的大部分代码是通用 C# Xamarin 代码。
作为快速总结,您需要
- 在
AddEditPersonViewModel.cs
中添加一个属性
- 更新
AddEditPersonViewModel.Init
以加载新的 属性 - 在
PersonPage.xaml
中添加一个映射到 属性 的选择器
- 在
Person.cs
中添加匹配的 属性 以存储该值 - 更新
IDBService.SavePerson
以允许传递新的 属性 - 更新
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;
});