2017-05-23 2 views
0

의 배열을 SQLite 데이터베이스에 어떻게 저장할 수 있습니까?SQLite에 Xamarin.Forms.Point의 배열을 저장하는 방법은 무엇입니까?

I는 다음과 같은 방법이 : 상기 방법을 통해 스테핑 때 padView에 서명가 주어

async void OnSaveButtonClicked(object sender, EventArgs e) 
{ 
    var temp = padView.Points; 
    var tempArray = padView.Points.ToArray(); 

    var databaseItem = new DatabaseItem 
    { 
     Name = Name.Text, 
     Date = Date.Date.ToString(), 
     //PadViewPoints = 
    }; 
    //var databaseItem = (DatabaseItem)BindingContext; 
    await App.Database.SaveItemAsync(databaseItem); 
    await Navigation.PopAsync(); 
} 

를, I는 tempArrayXamarin.Forms.Point[76]의 값을 갖는 것을 알 수있다.

데이터베이스에이 배열 배열을 저장하여 나중에 항목을로드 할 때로드 할 수 있습니다.

+2

그냥 dyamically 쿼리하지 않고 저장해야하는 경우 json으로 직렬화하고 텍스트로 저장할 수 있습니다. – Jason

답변

1

제이슨 말했듯이, 당신은 문자열로 저장할 수있다, 그것의 실제적인 구현은 다음과 같습니다

var temp = padView.Points; 
var tempArray = padView.Points.ToArray(); 

var databaseItem = new DatabaseItem 
{ 
    Name = Name.Text, 
    Date = Date.Date.ToString(), 
    PadViewPointsString = JsonConvert.SerializeObject(tempArray) 
}; 

그리고 DatabaseItem 클래스의

:

public class DatabaseItem 
{ 
    // All other properties 

    string padViewPointsString; 
    public string PadViewPointsString 
    { 
     get => padViewPointsString; 
     set 
     { 
      padViewPointsString = value; 
      PadViewPoints = JsonConvert.DeserializeObject<Xamarin.Forms.Point[]>(value); 
     } 
    } 

    public Xamarin.Forms.Point[] PadViewPoints { get; set; } 
} 

이 클래스의 직렬화를 만들 것입니다 문자열을 값으로 설정할 때마다 (예 : 직렬화 된 데이터베이스에서 가져올 때)

Obs. 이 예제는 Newtonsoft.Json 라이브러리를 사용합니다.

희망이 있습니다. :)

+0

감사합니다. 'padView.Points'를 역 직렬화 된'Point' 배열 (예를 들면 load)로 설정하는 방법을 알고 있습니까? 'IEnumerable '이 될 필요가 있습니까? – HappyCoding

+1

DatabaseItem 클래스의 PadViewPoints 속성은 Point (Point [])의 배열이므로 주어진 예제에 따라 'var someDatabaseItem = new DatabaseItem() {PadViewPoints = padView.Points.ToArray()}'이어야합니다. '. 또는 이미 someDatabaseItem.PadViewPoints = padView.Points.ToArray() 변수가있는 경우. –

관련 문제