2016-04-11 20 views
-1

Ich bin gerade dabei Xamarin zu entdecken und versuche einige Daten zu speichern. Ich suchte im Internet und ich fand einige Tutorials interessant wie diese one und diese documentation von Xamarin gegeben (Eigenschaften Wörterbuch).Xamarin - Shared Storage-Klasse für jede Plattform

Allerdings verstehe ich einige Dinge nicht. Ich habe unter Android und WinPhone (8.1, UWP) einige Apps entwickelt und zum Speichern von Daten habe ich SharedPreferences (Android) verwendet, welches ein System aus Keys/String und XML-Dateien (Serializer/Deserializer) (WinPhone) ist.

Für diese Xamarin-Anwendung möchte ich eine Speicherklasse erstellen, die für alle Plattformen funktioniert. Nach Suchen habe ich nichts gefunden, was ich auf jeder Plattform verwenden kann.

Application.Current.Properties ["id"] = someClass.ID;

von exemple, habe ich versucht, diesen Code zu verwenden, um Daten zu speichern und ... die einzige ‚mit‘ (Visual Studio 2015), dass ich über Android gefunden ..

Mein Ziel ist es, eine Klasse zu machen wie die

public class Storage 
{ 
    public void storeUser(User user) 
    { 
     Application.Current.Properties["username"] = user.username; 
    } 

    public User loadUser() 
    { 
     User user = new User(); 

     //Fill user with data 

     return (user); 
    } 
} 

ich möchte, dass diese Klasse eine „Shared Code-Klasse“ sein, die Daten in eine Datei oder irgendetwas anderes (es stört mich nicht) speichern kann, und die überall in meinem Code deklariert werden können. Dann möchte ich entweder auf Android oder iOS oder WinPhone Storage.storeUser (user) aufrufen können; so einfach wie es oben erklärt wurde.

Vielen Dank für das Lesen und Hilfe!

Antwort

1

Im vorausgesetzt, dass Ihr xamarin.forms da Ihre Verknüpfung zu dieser Dokumentation verwendet wird.

Ich benutze die PCLStorage von Daniel Plaisted. Sie können es auf NuGet finden.

Ich mache es normalerweise in einer statischen Klasse mit den beiden folgenden Methoden. Fügen Sie die PCLStorage NuGet Paket auf Ihren PCL und fügen

Using PCLStorage 

Sie wollen deserialisieren Ihr Objekt und übergeben Sie die Zeichenfolge zu diesem Service ... wenn Ihr Lese Inhalt Sie es nur auf das Objekt serialisiert zurück. easy peasy :)

Wenn Sie es verbessern möchten, könnten Sie einige Fehlerbehandlung wie einen Haken werfen und Block versuchen. Aber ich hatte keine Probleme.

Wenn Sie vertrauliche Daten speichern müssen, können Sie auch den Sicherheitsspeicher von xlabs verwenden. https://github.com/XLabs/Xamarin-Forms-Labs

Im tatsächlich mit beiden in meiner Anwendung. Viel Glück

+0

Vielen Dank für Ihre Antwort! :) Ich habe es mir angesehen, habe deinen Code ausprobiert und ihn an meinen Code angepasst. Ich habe jedoch einen Fehler, der "System.Xml.XmlException: Root-Element fehlt." Ich habe gesucht, woher es kommen könnte, aber ich habe nicht wirklich herausgefunden, woher dieser Fehler kommen könnte.Wie auch immer, alles dreht sich um xml, also habe ich vielleicht etwas nicht verstanden;) – Emixam23

+0

Versuchen Sie etwas mit XML zu machen? Klingt wie ein Fehler beim Versuch, XML oder etwas zu serialisieren. Versuchen Sie, einige Haltepunkte zu setzen und Ihren Weg zu debuggen, um zu sehen, wo der Fehler auftritt –

+0

Ja, ich versuche zu serialisieren, um mein Objekt in eine Zeichenfolge zu konvertieren, um Ihre 2 Funktionen zu verwenden;) – Emixam23