Uso delle impostazioni predefinite utente in Xamarin.iOS
Questo articolo illustra l'uso di NSUserDefault per salvare le impostazioni predefinite in un'app O un'estensione Xamarin.iOS.
La NSUserDefaults
classe consente alle app e alle estensioni iOS di interagire a livello di codice con il sistema predefinito a livello di sistema. Usando il sistema predefinito, l'utente può configurare il comportamento o lo stile di un'app per soddisfare le proprie preferenze (in base alla progettazione dell'app). Ad esempio, per presentare i dati in Metriche e misurazioni imperiali o selezionare un determinato tema dell'interfaccia utente.
Se usato con i gruppi di app, NSUserDefaults
offre anche un modo per comunicare tra app (o estensioni) all'interno di un determinato gruppo.
Informazioni sulle impostazioni predefinite utente
Come indicato in precedenza, le impostazioni predefinite utente (NSUserDefaults
) possono essere aggiunte a un'app (o a un'estensione) e usate per fornire opzioni configurabili che l'utente finale può modificare per regolare l'aspetto o il funzionamento dell'app in fase di esecuzione.
Quando l'app viene eseguita per la prima volta, NSUserDefaults
legge le chiavi e i valori dal database predefinito utente dell'app e li memorizza nella cache in memoria per evitare di aprire e leggere il database ogni volta che è necessario un valore.
Importante
Apple non consiglia più allo sviluppatore di chiamare il Synchronize
metodo per sincronizzare direttamente la cache in memoria con il database. Verrà invece chiamato automaticamente a intervalli periodici per mantenere sincronizzata la cache in memoria con il database predefinito di un utente.
La NSUserDefaults
classe contiene diversi metodi pratici per leggere e scrivere valori di preferenza per i tipi di dati comuni, ad esempio string, integer, float, boolean e URL. È possibile archiviare altri tipi di dati usando NSData
, quindi leggere o scrivere nel database predefinito utente. Per altre informazioni, vedere Preferenze di Apple e guida alla programmazione di Impostazioni.
Accesso all'istanza di NSUserDefaults condivisa
L'istanza predefinita utente condivisa consente l'accesso alle impostazioni predefinite utente per l'utente corrente del dispositivo. Se l'oggetto Shared Defaults non esiste, viene creato la prima volta che viene eseguito l'accesso e inizializzato con le informazioni seguenti:
- Oggetto
NSArgumentDomain
costituito dalle impostazioni predefinite analizzate dall'app corrente. - Dominio dell'identificatore bundle dell'app.
- Oggetto
NSGlobalDomain
costituito dalle impostazioni predefinite condivise da tutte le app. - Un dominio separato per ognuna delle lingue preferite dell'utente.
- Oggetto
NSRegistrationDomain
con un set di impostazioni predefinite temporanee che possono essere modificate dall'app per garantire che le ricerche siano sempre riuscite.
Per accedere all'istanza predefinita dell'utente condiviso, usare il codice seguente:
// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;
Accesso a un'istanza NSUserDefaults di un gruppo di app
Come indicato in precedenza, usando i gruppi di app, NSUserDefaults
può essere usato per comunicare tra app (o estensioni) all'interno di un determinato gruppo. Prima di tutto, è necessario assicurarsi che il gruppo di app e gli ID app necessari siano stati configurati correttamente nella sezione Certificati, Identificatori e profili in iOS Dev Center e che siano stati installati nell'ambiente di sviluppo.
Successivamente, i progetti App e/o Estensione devono avere uno degli ID app validi creati in precedenza e il Entitlements.plist
file deve essere incluso nel bundle dell'app con i gruppi di app abilitati e specificati.
A questo scopo, è possibile accedere alle impostazioni predefinite utente del gruppo di app condivise usando il codice seguente:
// Get App Group User Defaults
var plist = new NSUserDefaults ("group.com.xamarin.todaysharing", NSUserDefaultsType.SuiteName);
Dove group.com.xamarin.todaysharing
è il gruppo di app creato in Certificati, Identificatori e profili a cui si vuole accedere. Per altre informazioni, vedere la documentazione sulle funzionalità del gruppo di app .
Lettura dei valori predefiniti
Dopo aver eseguito l'accesso al database predefinito utente desiderato, è possibile leggere i valori dalle impostazioni predefinite usando coppie chiave/valore e diversi metodi pratici in base al tipo di dati letti:
ArrayForKey
: restituisce una matrice di per il valore dellaNSObjects
chiave specificato.BoolForKey
- Restituisce un valore booleano per la chiave specificata.DataForKey
: restituisce unNSData
oggetto per la chiave specificata.DictionaryForKey
- Restituisce un oggettoNSDictionary
per la chiave specificata.DoubleForKey
: restituisce un valore double per la chiave specificata.FloatForKey
: restituisce un valore float per la chiave specificata.IntForKey
: restituisce un valore intero per la chiave specificata.StringArrayForKey
: restituisce una matrice diString
oggetti dal valore della chiave specificato.StringForKey
: restituisce un valore stringa per la chiave specificata.URLForKey
: restituisce unNSUrl
valore per la chiave specificata.
Ad esempio, il codice seguente legge un valore booleano da User Defaults:
// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;
...
// Get value
var useHeader = plist.BoolForKey("UseHeader");
Scrittura di valori predefiniti
Analogamente alla lettura dei valori precedenti, dopo aver eseguito l'accesso al database predefinito utente desiderato, è possibile scrivere valori nelle impostazioni predefinite usando coppie chiave/valore e diversi metodi pratici in base al tipo di dati scritti:
SetBool
- Scrive il valore booleano specificato nella chiave specificata.SetDouble
- Scrive il valore double specificato nella chiave specificata.SetFloat
- Scrive il valore float specificato nella chiave specificata.SetString
- Scrive il valore stringa specificato nella chiave specificata.SetURL
- Scrive il valore dell'URL specificato (NSUrl
) nella chiave specificata.
Ad esempio, il codice seguente scrive un valore booleano nelle impostazioni predefinite utente:
// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;
...
// Save value
plist.SetBool(useHeader, "UseHeader");
...
Importante
Quando l'app viene eseguita per la prima volta, NSUserDefaults
legge le chiavi e i valori dal database predefinito utente dell'app e li memorizza nella cache in memoria per evitare di aprire e leggere il database ogni volta che è necessario un valore.
Riepilogo
Questo articolo ha illustrato la NSUserDefaults
classe e come può essere usata per fornire un set di opzioni che l'utente finale può usare per configurare l'app Xamarin.iOS. Inoltre, ha trattato l'uso di gruppi di app per comunicare tra un'estensione e la relativa app padre o tra app in un gruppo.