plist
Nei framework NeXTSTEP, GNUstep e Cocoa in macOS, i file plist (abbreviazione di Property List) sono file che memorizzano degli oggetti serializzati.
I file plist usano l'estensione .plist
, e sono codificati e decodificati dalla classe NSPropertyListSerialization
. Un file plist può contenere solo oggetti Core Foundation o Foundation Kit: la libreria non sa come serializzare altri tipi di oggetti.
Spesso sono usati per memorizzare le preferenze impostate dall'utente (un po' come i Registri Windows su Microsoft Windows). Sono usati anche per memorizzare informazioni sui bundle e sulle applicazioni, con un sistema simile alle resource fork del vecchi Mac OS.
Le Representations
[modifica | modifica wikitesto]Siccome i dati memorizzati nei file plist sono piuttosto astratti, i formati di file possono essere diversi. Cioè, NeXTSTEP usava un formato per rappresentare i file plist, e i successivi framework GNUstep e macOS hanno introdotto altri formati.
NeXTSTEP
[modifica | modifica wikitesto]Sotto NeXTSTEP, i file plist erano progettati per essere comprensibili da una persona ed essere modificabili a mano. Essi erano serializzati in ASCII, in un modo che ricorda un linguaggio di programmazione.
Le stringhe erano rappresentate così:
"Questa è la mia stringa."
I dati binari invece in quest'altro modo:
< [codici esadecimali in ASCII] >
Gli array erano rappresentati così:
( "1", "2", "3" )
E i dizionari (coppie chiave-valore) così:
{
"chiave" = "valore";
...
}
Una limitazione del formato plist di NeXT è l'impossibilità di rappresentare un oggetto NSValue (numero, booleano...).
GNUstep
[modifica | modifica wikitesto]GNUstep usa il formato NeXTSTEP con alcune aggiunte. Primo, supporta gli oggetti NSValue (rappresentati in ASCII), secondo, supporta gli oggetti NSDate (che sono serializzati così: <AAAA-MM-GG OO:MM:SS fuso_orario>
)
GNUstep può anche leggere e scrivere i file plist nel formato usato da macOS.
Mac OS X
[modifica | modifica wikitesto]Mac OS può leggere anche il formato NeXTSTEP. Esso però introduce due propri formati.
In Mac OS X Cheetah, il formato NeXTSTEP venne deprecato, e fu introdotto un nuovo formato XML, con una DTD della Apple.
Mac OS X Jaguar ha introdotto un nuovo formato, dove i file plist sono memorizzati come binari. A partire da Mac OS X Tiger, questo è il formato di default.
L'utilità plutil (introdotta con Mac OS X Jaguar) può essere usata per controllare la sintassi dei file plist, o convertirli da un formato all'altro.
Per il formato XML, i tag e le relative classi Foundation sono le seguenti:
Tipo CF | Tag XML |
---|---|
NSString | <string> |
NSNumber | <real> o <integer> |
NSDate | <date> |
NSBoolean | <true /> o <false /> |
NSData | <data> |
NSArray | <array> |
NSDictionary | <dict> |
L'utility defaults può modificare i file plist identificandoli attraverso il loro dominio. Property List Editor (che fa parte di SDK) è un programma grafico che può editare file plist uno per volta.
Collegamenti esterni
[modifica | modifica wikitesto]- (EN) Documentazione Apple per i file plist
- (EN) Documentazione per la classe NSPropertyListSerialization dal progetto GNUstep
- (EN) OpenStep plist API dalla Sun Microsystems