Trabajar con valores predeterminados de usuario en Xamarin.iOS

En este artículo se describe cómo trabajar con NSUserDefault para guardar la configuración predeterminada en una aplicación o extensión de Xamarin.iOS.

La clase proporciona una manera de que las aplicaciones y extensiones de iOS interactúen mediante programación con el sistema de NSUserDefaults valores predeterminados de todo el sistema. Mediante el sistema de valores predeterminados, el usuario puede configurar el comportamiento o el estilo de una aplicación para satisfacer sus preferencias (en función del diseño de la aplicación). Por ejemplo, para presentar datos en medidas métricas frente a métricas o seleccionar un tema de interfaz de usuario determinado.

Cuando se usa con grupos de aplicaciones, también proporciona una manera de comunicarse NSUserDefaults entre aplicaciones (o extensiones) dentro de un grupo determinado.

Acerca de los valores predeterminados del usuario

Como se indicó anteriormente, los valores predeterminados de usuario ( ) se pueden agregar a una aplicación (o extensión) y se pueden usar para proporcionar opciones configurables que el usuario final puede modificar para ajustar la apariencia u operación de la aplicación en tiempo de NSUserDefaults ejecución.

Cuando la aplicación se ejecuta por primera vez, lee las claves y los valores de la base de datos de valores predeterminados de usuario de la aplicación y las almacena en memoria caché para evitar abrir y leer la base de datos cada vez que se requiere un NSUserDefaults valor.

Importante

Apple ya no recomienda que el desarrollador llame al método para sincronizar la memoria caché en Synchronize memoria con la base de datos directamente. En su lugar, se llamará automáticamente a intervalos periódicos para mantener la caché en memoria sincronizada con la base de datos predeterminada de un usuario.

La clase contiene varios métodos prácticos para leer y escribir valores de preferencia para tipos de datos comunes, como NSUserDefaults cadena, entero, float, booleano y direcciones URL. Otros tipos de datos se pueden archivar mediante y, a continuación, leer NSData o escribir en la base de datos de valores predeterminados del usuario. Para obtener más información, vea Preferencias y Configuración de programación de Apple.

Acceso a la instancia compartida de NSUserDefaults

La instancia de valores predeterminados de usuario compartido proporciona acceso a los valores predeterminados de usuario para el usuario actual del dispositivo. Si el objeto Shared Defaults no existe, se crea la primera vez que se accede a él e inicializa con la siguiente información:

  • que NSArgumentDomain consta de los valores predeterminados que se analizan desde la aplicación actual.
  • Dominio de identificador de lote de la aplicación.
  • que NSGlobalDomain consta de los valores predeterminados compartidos por todas las aplicaciones.
  • Un dominio independiente para cada uno de los idiomas preferidos del usuario.
  • con un conjunto de valores predeterminados temporales que la aplicación puede modificar para NSRegistrationDomain asegurarse de que las búsquedas siempre se realizarán correctamente.

Para acceder a la instancia de valores predeterminados de usuario compartido, use el código siguiente:

// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;

Acceso a una instancia de NSUserDefaults del grupo de aplicaciones

Como se indicó anteriormente, mediante el uso de grupos de aplicaciones, se puede usar para comunicarse entre aplicaciones NSUserDefaults (o extensiones) dentro de un grupo determinado. En primer lugar, deberá asegurarse de que el grupo de aplicaciones y los identificadores de aplicación necesarios se han configurado correctamente en la sección Certificados, perfiles de identificadores en iOS Centro de desarrollo y se han instalado en el entorno de desarrollo.

A continuación, los proyectos de aplicación o extensión deben tener uno de los identificadores de aplicación válidos creados anteriormente y el archivo debe incluirse en el paquete de aplicaciones con los grupos de aplicaciones habilitados y Entitlements.plist especificados.

Con todo esto en su lugar, se puede acceder a los valores predeterminados de usuario del grupo de aplicaciones compartido mediante el código siguiente:

// Get App Group User Defaults
var plist = new NSUserDefaults ("group.com.xamarin.todaysharing", NSUserDefaultsType.SuiteName);

Donde group.com.xamarin.todaysharing es el grupo de aplicaciones creado en group.com.xamarin.todaysharing a los que desea acceder. Para más información, consulte la documentación sobre las funcionalidades del grupo de aplicaciones.

Lectura de valores predeterminados

Una vez que haya accedido a la base de datos predeterminada de usuario deseada, puede leer valores de los valores predeterminados mediante pares clave-valor y varios métodos de conveniencia basados en el tipo de datos que se leen:

  • ArrayForKey : devuelve una matriz de NSObjects para el valor de clave especificado.
  • BoolForKey : devuelve un valor booleano para la clave dada.
  • DataForKey : devuelve un NSData objeto para la clave dada.
  • DictionaryForKey : devuelve un NSDictionary para la clave dada.
  • DoubleForKey : devuelve un valor double para la clave dada.
  • FloatForKey : devuelve un valor float para la clave dada.
  • IntForKey : devuelve un valor entero para la clave dada.
  • StringArrayForKey : devuelve una matriz de String objetos del valor de clave especificado.
  • StringForKey : devuelve un valor de cadena para la clave especificada.
  • URLForKey : devuelve un NSUrl valor para la clave dada.

Por ejemplo, el código siguiente leería un valor booleano de los valores predeterminados del usuario:

// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;
...

// Get value
var useHeader = plist.BoolForKey("UseHeader");

Escribir valores predeterminados

Al igual que al leer los valores anteriores, después de tener acceso a la base de datos predeterminada de usuario deseada, puede escribir valores en los valores predeterminados mediante pares clave-valor y varios métodos prácticos basados en el tipo de datos que se escriben:

  • SetBool : escribe el valor booleano especificado en la clave dada.
  • SetDouble : escribe el valor double especificado en la clave dada.
  • SetFloat : escribe el valor float especificado en la clave dada.
  • SetString : escribe el valor de cadena especificado en la clave especificada.
  • SetURL - Escribe el valor de dirección URL ( NSUrl ) especificado en la clave especificada.

Por ejemplo, el código siguiente escribiría un valor booleano en los valores predeterminados del usuario:

// Get Shared User Defaults
var plist = NSUserDefaults.StandardUserDefaults;
...

// Save value
plist.SetBool(useHeader, "UseHeader");
...

Importante

Cuando la aplicación se ejecuta por primera vez, lee las claves y los valores de la base de datos de valores predeterminados de usuario de la aplicación y las almacena en memoria caché para evitar abrir y leer la base de datos cada vez que se requiere un NSUserDefaults valor.

Resumen

En este artículo se ha abordado la clase y cómo se puede usar para proporcionar un conjunto de opciones que el usuario final puede usar para configurar NSUserDefaults la aplicación xamarin.iOS. Además, se ha abordado el uso de grupos de aplicaciones para comunicarse entre una extensión y su aplicación primaria o entre las aplicaciones de un grupo.