Condividi tramite


SaveDataFunzioni , LoadDatae ClearData

Si applica a: App Canvas

Salva e ricarica una raccolta dalla memoria dell'host dell'app.

Descrizione

La SaveData funzione archivia una raccolta per usarla in un secondo momento con un nome.

La LoadData funzione ricarica una raccolta in base al nome salvato in precedenza con SaveData. Non è possibile usare questa funzione per caricare una raccolta da un'altra origine.

La ClearData funzione cancella lo spazio di archiviazione con un nome specifico o cancella tutte le risorse di archiviazione associate all'app se non viene specificato alcun nome.

Nota

  • Il nome condiviso tra SaveData, LoadDatae ClearData è una chiave, non un nome di file. Non è necessario che sia complesso in quanto i nomi sono univoci per ciascuna app e non vi è alcun rischio di conflitto di nomi. Il nome non deve contenere alcuno di questi caratteri:*".?:\<>|/.
  • SaveData è limitato a 1 MB di dati per Power Apps in esecuzione in Teams e in un Web browser. Non c'è un limite fisso per Power Apps in esecuzione in un lettore per dispositivi mobili ma sono presenti limiti pratici discussi di seguito.
  • Non usare SaveData per archiviare i dati sensibili nel Web perché verranno archiviati in testo normale.

Utilizzare queste funzioni per migliorare le prestazioni di avvio dell'app:

  • Memorizzando dati nella cache nella formula App.OnStart al primo avvio.
  • Ricaricaricamento della cache locale nelle successive esecuzioni.

È inoltre possibile utilizzare queste funzioni per aggiungere semplici funzionalità offline all'app.

Non è possibile utilizzare queste funzioni in un browser quando:

  • Si crea l'app in Power Apps Studio.

Per testare l'app, eseguirla in Power Apps Mobile su un dispositivo iPhone o Android.

Queste funzioni sono limitate dalla quantità di memoria dell'app disponibile mentre operano su una raccolta in memoria. La memoria disponibile può variare in base a fattori quali:

  • Dispositivo e sistema operativo.
  • Memoria che utilizza il lettore di Power Apps.
  • Complessità dell'app con schermate e controlli.

Testare l'app con scenari previsti sul tipo di dispositivi che verranno probabilmente eseguiti durante la memorizzazione di dati di grandi dimensioni. È necessario disporre tra 30 e 70 MB di memoria disponibile in generale.

Queste funzioni dipendono dalla raccolta implicitamente definita con Collect o ClearCollect. Non è necessario chiamare Collect o ClearCollect per caricare i dati nella raccolta per definirli. Si tratta di un caso comune quando si usa LoadData dopo un oggetto precedente SaveData. Tutto ciò che serve è la presenza di queste funzioni in una formula per definire implicitamente la struttura della raccolta. Per ulteriori informazioni, vedere Creazione e rimozione di variabili.

I dati caricati verranno aggiunti alla raccolta. Usare la funzione Clear prima di chiamare LoadData se si desidera iniziare con una raccolta vuota.

Sicurezza dei dati

Valutare attentamente l'isolamento e la crittografia dei dati archiviati con SaveData e decidere se è appropriato per le proprie esigenze, soprattutto se i dispositivi sono condivisi da più utenti.

I dati archiviati con SaveData sono isolati da altri lettori di Power Apps. I dati vengono archiviati in base all'ID app dell'app, isolando automaticamente lo spazio dei SaveData nomi tra Power Apps.

Il sistema operativo e il browser sono responsabili dell'isolamento dei dati tra Power Apps e altre app su un dispositivo e con siti Web. Ad esempio, il sistema operativo è responsabile dell'isolamento dei dati archiviati in Microsoft Outlook dai dati archiviati in Power Apps e dell'isolamento di tali dati anche da siti Web come Bing.com o PowerApps.com. Le strutture sandbox dell'app predefinite del sistema operativo vengono usate per SaveData l'archiviazione che in genere non è accessibile o nascosta dall'utente.

Quando si utilizza la stessa app, il sistema operativo e il browser sono anche responsabili dell'isolamento dei dati tra diversi utenti a livello di sistema operativo. Ad esempio, se due utenti diversi condividono un computer e utilizzano due credenziali di accesso Windows diverse, il sistema operativo è responsabile dell'isolamento dei dati tra i due utenti Windows.

I dati possono o meno essere isolati tra diversi utenti Power Apps se l'utente del sistema operativo è lo stesso. Non tutti i giocatori Power Apps li trattano allo stesso modo. Ad esempio, dopo aver effettuato l'accesso come lo stesso utente Windows, nel lettore Power Apps, l'utente si disconnette da Power Apps e accede come un altro utente Power Apps. I dati archiviati in un'app prima del cambio di utente Power Apps, potrebbero essere accessibili al secondo utente Power Apps all'interno della stessa app. I dati potrebbero anche essere rimossi e il primo utente Power Apps potrebbe non essere più in grado di accedervi. Il comportamento varia tra i giocatori Power Apps.

Il dispositivo può anche crittografare i dati. In alternativa, è possibile utilizzare uno strumento di gestione di dispositivi mobili come Microsoft Intune. I dati archiviati durante la riproduzione di un'app in un browser Web non sono crittografati.

Sintassi

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

  • Raccolta - Obbligatorio. Raccolta da salvare o caricare.
  • Nome - Obbligatorio. Nome dell'archivio. È necessario usare lo stesso nome per salvare e caricare lo stesso set di dati. Lo spazio dei nomi non viene condiviso con altre app. I nomi non deve contenere alcuno di questi caratteri:*".?:\<>|/.
  • IgnoreNonexistentFile - Facoltativo. Un valore booleano che indica cosa fare se il file non esiste già. Utilizzare false (impostazione predefinita) per restituire un errore e true per eliminare l'errore.

ClearData( [Name] )

  • Nome - Facoltativo. Nome della risorsa di archiviazione salvata in precedenza con SaveData. Se Nome non viene fornito, tutto lo spazio di archiviazione associato all'app viene cancellato.

Esempi

Formula Descrizione Risultato
SaveData( LocalCache, "MyCache" ) Salvare la raccolta LocalCache nel dispositivo dell'utente con il nome "MyCache", adatto per LoadData il recupero in un secondo momento. I dati vengono salvati nell'host dell'app con il nome "MyCache".
LoadData( LocalCache, "MyCache" ) Carica la raccolta LocalCache dal dispositivo dell'utente con il nome "MyCache", archiviata in precedenza con una chiamata a SaveData. I dati vengono caricati dall'host dell'app con il nome "MyCache".
ClearData( "MyCache" ) Cancella la memoria con il nome "MyCache". Tutti i dati archiviati in questo nome non saranno più disponibili tramite LoadData. I dati vengono rimossi dall'host dell'app con il nome "MyCache".
ClearData() Cancella tutto lo spazio di archiviazione associato a questa app. I dati archiviati da altre app non sono interessati. Tutti i dati vengono rimossi dall'host dell'app.

Esempio offline semplice

L'esempio semplice seguente acquisisce e memorizza i nomi e le immagini degli elementi quotidiani quando si è offline. Memorizza le informazioni nella memoria locale del dispositivo per un uso successivo. Ciò consente di chiudere l'app o riavviare il dispositivo senza perdere dati.

Nota

Questo esempio utilizza un controllo camera per acquisire le immagini. Poiché SaveData è limitato a 1 MB di dati durante l'esecuzione in Teams o in un Web browser, questo esempio non funzionerà con più di alcune immagini. Inoltre, a seconda della fotocamera, potrebbe non funzionare nemmeno con un'immagine. Usa un dispositivo per svolgere questo esempio completo o rimuovi il controllo camera e la parte dell'immagine di questo esempio per l'esecuzione in Teams o in un Web browser.

  1. Creare un'app canvas vuota con un layout per tablet. Per maggiori dettagli, leggere Creazione di un'app da un modello e selezionare Layout tablet sotto App vuota.

  2. Aggiungere un controllo Text input e un controlloCamera e disporli più o meno come mostrato:

    Un controllo text input e un controllo camera aggiunti a uno schermo vuoto.

  3. Aggiungere un controllo Button.

  4. Fare doppio clic sul controllo button per modificare il testo del pulsante in Aggiungi elemento (o modificare la proprietà Text).

  5. Impostare la proprietà OnSelect del controllo button su questa formula che aggiungerà un elemento alla nostra raccolta:

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

    Un controllo button aggiunto con il testo

  6. Aggiungere un altro controllo Button.

  7. Fare doppio clic sul controllo button per modificare il testo del pulsante in Salva dati (o modificare la proprietà Text).

  8. Impostare la proprietà OnSelect del controllo button su questa formula per salvare la raccolta nel dispositivo locale:

    SaveData( MyItems, "LocalSavedItems" )
    

    Un controllo button aggiunto con il testo

    È tentante testare il pulsante in quanto non influisce su nulla. Ma verrà visualizzato solo un errore in quanto la creazione avviene in un browser Web. Salvare dapprima l'app e aprirla su un dispositivo prima di seguire i passaggi successivi per testare questa formula:

  9. Aggiungere un terzo controllo Button.

  10. Fare doppio clic sul controllo button per modificare il testo del pulsante in Carica dati (o modificare la proprietà Text).

  11. Impostare la proprietà OnSelect del controllo button su questa formula per caricare la raccolta dal dispositivo locale:

    LoadData( MyItems, "LocalSavedItems" )
    

    Un controllo button aggiunto con il testo

  12. Aggiungere un controllo Gallery con un layout verticale che include un'immagine e aree di testo:

    Selezione del controllo Gallery e layout

  13. Quando richiesto, selezionare la raccolta MyItems come origine dati per questa raccolta. Viene impostata la proprietà Items del controllo Gallery:

    Selezione della raccolta di origine dati. Il controllo immagine nel modello di galleria dovrebbe impostare per impostazione predefinita la sua proprietà Immagine su ThisItem.Picture e i controlli etichetta dovrebbero entrambi impostare per impostazione predefinita la loro proprietà Testo su ThisItem.Item. Controllare queste formule se, dopo aver aggiunto gli elementi nei passaggi seguenti, la raccolta è vuota.

  14. Posizionare il controllo a destra degli altri controlli:

    Raccolta riposizionata a destra della schermata.

  15. Salvare l'app. Se è la prima volta che è stata salvata, non è necessario pubblicarla. Se non è la prima volta, pubblicare l'app dopo averla salvata.

  16. Aprire l'app in un dispositivo, ad esempio un telefono o un tablet. SaveData e LoadData non possono essere usati in Studio o in un Web browser. Aggiornare l'elenco di app se l'app non viene visualizzata immediatamente; potrebbero essere necessari alcuni secondi prima che l'app appaia sul dispositivo. Anche disconnettersi e accedere nuovamente al proprio account può essere d'aiuto.

    App in esecuzione senza elementi aggiunti. Una volta scaricata l'app, puoi disconnetterti dalla rete ed eseguirla offline.

  17. Immettere il nome e scattare una foto di un elemento.

  18. Selezionare il pulsante Aggiungi elemento. Ripetere l'aggiunta di elementi un paio di volte per caricare la raccolta.

    App in esecuzione con tre elementi aggiunti.

  19. Selezionare il pulsante Salva dati. Ciò salverà i dati nella raccolta sul dispositivo locale.

  20. Chiudere l'app. La raccolta nella memoria andrà persa, inclusi tutti i nomi e le immagini degli elementi, ma rimarranno comunque nella memoria del dispositivo.

  21. Avviare di nuovo l'app. La raccolta nella memoria verrà nuovamente visualizzata come vuota nella raccolta.

    App di nuovo in esecuzione senza elementi aggiunti.

  22. Selezionare il pulsante Carica dati. La raccolta verrà ripopolata dai dati memorizzati sul dispositivo e gli elementi torneranno nella raccolta. La raccolta era vuota prima che questo pulsante chiami la LoadData funzione. Non è necessario chiamare Collect o ClearCollect prima di caricare i dati dall'archiviazione.

    App in esecuzione con tre elementi ripristinati dopo aver chiamato la LoadData funzione.

  23. Selezionare di nuovo il pulsante Carica dati. I dati memorizzati verranno aggiunti alla fine della raccolta e verrà visualizzata una barra di scorrimento nella raccolta. Se si vuole sostituire anziché accodare, usare prima di tutto la funzione Clear per cancellare la raccolta prima di chiamare la LoadData funzione.

    App in esecuzione con sei elementi ripristinati dopo aver chiamato la LoadData funzione due volte.

Esempio offline più avanzato

Per un esempio dettagliato, vedere l'articolo sulle funzionalità offline semplici.