Funktionerna SaveData, LoadData och ClearData

Gäller: Arbetsyteappar

Sparar och laddar om en samling från appvärdens lagringsutrymme.

Kommentar

Dessa funktioner kan nu användas när ett program används i en webbläsare som en experimentell funktion. Denna funktion inaktiveras som standard. För att aktivera den går du till Inställningar>Kommande funktioner>Experimentellt>Aktiverade SaveData, LoadData, ClearData i webbspelaren." och aktiverar knappen. Om du vill skicka feedback om den här experimentfunktionen går du till Power Apps-communityforum.

Beskrivning

Funktionen SaveData lagrar en samling för senare användning under ett namn.

Funktionen LoadData läser in en samling igen med namnet som tidigare sparades med SaveData. Du kan inte använda den här funktionen för att läsa in en samling från en annan källa.

Med funktionen ClearData rensar lagringen under ett specifikt namn eller rensar all lagring som är associerad med programmet om inget namn anges.

Kommentar

  • Det namn som delas SaveData, LoadData och ClearData är en nyckel, inte ett filnamn. Det behöver inte vara komplicerat eftersom namnen är unika för varje program och det finns ingen risk för namnkonflikter. Namnet får inte innehålla något av följande tecken: *".?:\<>|/.
  • SaveData får ha högst 1 MB data för Power Apps som körs Teams samt i en webbläsare. Det finns ingen fast begränsning för Power Apps att köra i en mobilspelare, men det finns praktiska gränser som diskuteras nedan.
  • Använd inte SaveData för att lagra känsliga data på webben eftersom de lagras i oformaterad text.

Med de här funktionerna kan du förbättra startprestanda genom att:

  • Cachelagra data i Program.OnStart formeln i en första körning.
  • Läser in det lokala cacheminnet vid nästa körning.

Du kan även använda de här funktionerna för att lägga till enkla offline-funktioner i programmet.

Du kan inte använda dessa funktioner i en webbläsare när:

  • Redigera programmet i Power Apps Studio.

Testa ditt program genom att köra den i Power Apps Mobile på en iPhone eller en Android-enhet.

De här funktionerna begränsas av mängden tillgängligt program minne när de körs på en samling i minnet. Tillgängligt minne kan variera beroende på faktorer som:

  • Enheten och operativ systemet.
  • Det minne som används av Power Apps-spelaren.
  • programmets komplexitet med skärmar och kontroller.

Testa ditt program med de scenarier som har förväntat sig på den typ av enheter som du tror att programmet körs när stora data lagras. Förvänta dig mellan 30 MB och 70 MB tillgängligt minne i allmänhet.

De här funktionerna är beroende av vilken samling som är implicit definierad med Collect eller ClearCollect. Du behöver inte anropa Collect eller ClearCollect för att läsa in data i samlingen för att definiera den. Det är ett vanligt fall när du använder LoadData efter en tidigare SaveData. Allt som behövs är förekomsten av de här funktionerna i en formel för att implicit definiera samlingens struktur. Mer information finns i skapa och ta bort variabler.

De inlästa data kommer att läggas till i samlingen. Använd funktionen Clear innan du anropar LoadData om du vill börja med en tom samling.

Datasäkerhet

Överväg att noggrant isolera och kryptera data som lagras med SaveData och bestäm om de passar dina behov, särskilt om enheter delas med flera användare.

Data som lagras med SaveData är isolerat från annat Power Apps av Power Apps spelare. Data lagras baserat på appens app-ID, vilket automatiskt isolerar SaveData namnrymden mellan Power Apps.

Operativsystemet och webbläsaren ansvarar för att isolera data mellan och andra Power Apps och andra appar på en enhet och med webbplatser. Till exempel är operativsystemet ansvarigt för att isolera data som lagras i Microsoft Outlook från data som lagras i Power Apps och isolera dessa data från webbplatser som Bing.com eller PowerApps.com. Operativsystemets inbyggda anläggningar för begränsat läge i appar används för lagring av SaveData som vanligtvis inte är åtkomligt för eller dolt för användaren.

När du använder samma app är operativsystemet och webbläsaren också ansvariga för att isolera data mellan olika användare på operativsystemsnivå. Om till exempel två olika användare delar på en dator och använder två olika inloggningsuppgifter för Windows är operativsystemet ansvarigt för att isolera data mellan de två Windows-användarna.

Data kan eller kanske inte vara enstaka mellan olika Power Apps användare om operativsystemets användare är samma. Alla Power Apps spelare behandlar inte detta på samma sätt. Till exempel, när du är inloggad som samma Windows-användare, i Power Apps spelare loggar användaren ut från Power Apps och loggar in som en annan Power Apps användare. Data som lagras i en app innan Power Apps användaren ändras kan vara tillgängliga för den andra Power Apps användaren i samma app. Data kan också tas bort och den första Power Apps användaren kanske inte längre kan komma åt den. Beteendet varierar mellan olika Power Apps spelare.

Operativsystemet kan också kryptera data. Du kan också använda verktyget för hantering av mobila enheter, t.ex. Microsoft Intune. Data som lagras när ett program används i en webbläsare krypteras inte.

Syntax

SaveData( Collection, Name )
LoadData( Collection, Name [, IgnoreNonexistentFile ])

  • Collection – Krävs. Samling som ska lagras eller läsas in.
  • Name – Krävs. Lagringens namn. Namnet måste vara samma när du sparar och läser in samma uppsättning data. Namnrymden delas inte med andra program. Namnet får inte innehålla något av följande tecken: *".?:\<>|/.
  • IgnoreNonexistentFile – valfritt. Ett booleskt värde som anger vad som ska göras om filen inte redan finns. Använd false (standard) om du vill returnera ett fel och ha värdet true om du vill ignorera felet.

ClearData( [Namn] )

  • Namn – valfritt. Namnet på det lagringsutrymme som tidigare sparats med SaveData. Om Namn inte tillhandahålls rensas all lagring som är associerad med programmet.

Exempel

Formel Beskrivning Resultat
SaveData( LocalCache, "MyCache" ) Spara LocalCache-samlingen på användarens enhet under namnet "MyCache" som passar för LoadData att hämta senare. Data sparas i appvärden under namnet "MyCache".
LoadData( LocalCache, "MyCache" ) Läser in LocalCache-samlingen från användarens enhet under namnet "MyCache" som tidigare lagrades med ett anrop till SaveData. Data läses in från appvärden under namnet "MyCache".
ClearData( "MyCache" ) Rensar lagringsutrymmet under namnet "MyCache". Alla data som lagras under det här namnet kommer inte längre att vara tillgängliga via LoadData. Data tas bort från appvärden under namnet "MyCache".
ClearData() Rensa allt lagringsutrymme som är associerat med det här programmet. Data som lagras i andra program påverkas inte. Alla data tas bort från appvärden.

Enkelt exempel offline

Följande enkla exempel fångar in och lagrar namn och bilder på vardagliga objekt när de är offline. Informationen lagras i enhetens lokala lagringsutrymme för senare användning. Detta gör att programmet kan stängas eller att enheten ska startas om utan att data förloras.

Kommentar

I det här exemplet används en kamerakontroll för att registrera bilder. Eftersom SaveData begränsas till 1 MB data vid körning i Teams eller i en webbläsare kommer detta exempel inte att fungera med fler än några få bilder. Beroende på kamera kan det hända att det heöa inte fungerar med ens en enda bild. Använd en enhet för att gå igenom detta fullständiga exempel, eller ta bort kamerakontrollen och bilddelen i detta exempel för att köra i Teams eller i en webbläsare.

  1. Skapa en tom arbetsyteapp med en surfplattelayout. Om du vill ha mer information kan du läsa skapa ett program från en mall och välj surfplattelayout under tom app.

  2. Lägg till en Text Inputkontroll och en Kamerakontroll och ordna dem ungefär som de visas:

    En Text Input och kamerakontroll läggs till på en tom skärm.

  3. Lägg till en Button-kontroll.

  4. Dubbelklicka på Button-kontroll om du vill ändra knapptexten till Lägg till objekt (eller ändra egenskapen Text).

  5. Ange egenskapen OnSelectför Button-kontroll till den här formeln som lägger till ett objekt i vår samling:

    Collect( MyItems, { Item: TextInput1.Text, Picture: Camera1.Photo } )
    

    En knapp kontroll som lagts till med texten

  6. Lägg till en annan Button-kontroll.

  7. Dubbelklicka på Button-kontroll om du vill ändra knapptexten till Spara data (eller ändra egenskapen Text).

  8. Ange egenskapen OnSelect för Button-kontroll till den här formeln för att spara vår samling till den lokala enheten:

    SaveData( MyItems, "LocalSavedItems" )
    

    En knapp kontroll som lagts till med texten

    Det är frestande att testa knappen eftersom den inte påverkar någonting. Men det visas bara ett fel när du redigerar i en webbläsare. Spara programmet först och öppna på en enhet innan du utför nästa steg för att testa formeln:

  9. Lägg till en tredje Button-kontroll.

  10. Dubbelklicka på Button-kontroll om du vill ändra knapptexten till Läs in data (eller ändra egenskapen Text).

  11. Ange egenskapen OnSelect för Button-kontroll till den här formeln för att läsa in vår samling från den lokala enheten:

    LoadData( MyItems, "LocalSavedItems" )
    

    En knapp kontroll som lagts till med texten

  12. Lägg till Gallerikontroll med en lodrät layout som innehåller bild- och textområden:

    Urval av gallerier, lodrätt markerat med bild- och textområden

  13. När du uppmanas väljer du samlingen MyItems som datakälla för det här galleriet. Detta anger egenskapen Items för Gallery-kontrollen till den här formeln:

    Galleri urval av datakälla. Den bildkontroll i galleriet mallen bör standard sin Image-egenskap till ThisItem.Picture och kontrollerna etikett bör både standard sin Text-egenskap till ThisItem.Item. Kontrollera formlerna om de efter att du har lagt till objekt i följande steg inte ser någonting i galleriet.

  14. Placera kontrollen till höger om de andra kontrollerna:

    Galleriet omplaceras till höger om skärmen.

  15. Spara din app. Om det är första gången du sparar den behöver du inte publicera den. Om det inte är första gången publicerar du programmet när du har sparat den.

  16. Öppna programmet på en enhet, till exempel en mobiltelefon eller surfplatta. SaveData och LoadData kan inte användas i Studio eller i en webbläsare. Uppdatera applistan om ditt program inte visas omedelbart kan det ta några sekunder innan programmet visas på enheten. Det kan hjälpa dig att logga ut och in igen på kontot.

    Appen körs utan några artiklar tillagda. När din app har laddats ner kan du koppla från nätverket och köra appen offline.

  17. Ange namnet och ta en bild av objektet.

  18. Välj knappen Lägg till objekt. Lägg till objekt några gånger för att hämta samlingen.

    Appen körs med tre objekt tillagda.

  19. Klicka på knappen Spara data. Då sparas data i samlingen på den lokala enheten.

  20. Stäng programmet. Mängden i minnet kommer att förloras inklusive alla objeknamn och bilder, men finns kvar i enhetens lagringsutrymme.

  21. Starta programmet igen. Mängden i minnet kommer återigen att visas som tom i galleriet.

    Appen körs igen utan några artiklar tillagda.

  22. Klicka på knappen Läs in data. Samlingen fylls i igen från de lagrade data på enheten och objekten kommer att vara tillbaka i galleriet. Samlingen var tom innan den här knappen anropar funktionen LoadData behöver du inte anropa Collect eller ClearCollect innan informationen lästes in från lagring.

    App körs med tre objekt återställda efter att ha anropat LoadData-funktionen.

  23. Klicka på knappen Läs in data igen. De lagrade data kommer att läggas till i slutet av samlingen och en rullningslist visas i galleriet. Om du vill ersätta i stället för att lägga till ska du använda funktionen Clear först för att ta bort samlingen innan du anropar LoadData-funktionen.

    App körs med sex objekt återställda efter att ha anropat LoadData-funktionen två gånger.

Mer avancerat offline-exempel

Ett detaljerat exempel finns i artikeln om enkla offline-funktioner.