¿Puedo voltear mediante programación los valores de Info.plist mientras mi aplicación se está ejecutando?

StackOverflow https://stackoverflow.com/questions/1429886

  •  07-07-2019
  •  | 
  •  

Pregunta

Estoy interesado en usar las teclas SBUsesNetwork y UIRequiresPersistentWiFi en mi aplicación; sin embargo, me gustaría habilitarlos solo cuando use un cierto conjunto de controladores de vista. ¿Hay alguna forma de voltear programáticamente esos valores clave mientras la aplicación se está ejecutando?

¿Fue útil?

Solución

No puede modificar el contenido de su paquete mientras se ejecuta, no tiene acceso de escritura a ese directorio. No estoy seguro de que haya una manera de hacer exactamente lo que quieres.

Otros consejos

Sé que puede obtener su info.plist como NSDictionary a través de NSBundle con lo siguiente:

NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];

desde allí puede hacer una mutableCopy del NSDictionary y establecer los valores allí. Al realizar consultas a las teclas, deberá asegurarse de consultar el NSDictionary y no su archivo info.plist, pero no debería ser difícil encapsular todo esto en una clase que maneje ambos problemas para ti.

En cuanto a modificar el archivo info.plist de su aplicación directamente, podría haber problemas allí (por ejemplo, si modifica el archivo, la firma del código fallará y su aplicación se considerará corrupta), aunque no estoy seguro de esto.

No puede modificar la lista de información. No parece haber una forma autorizada por Apple de hacer lo que buscas.

No creo que esto funcione. [NSBundle mainBundle] tiene un puntero a un InfoDictionary específico. Aunque tome una copia mutable, NSBundle no sabría nada sobre nuestro nuevo plist. ¿Alguien lo ha intentado todavía?

Info.plist no es más que un diccionario. Por lo tanto, se puede editar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top