<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Property_List</id>
	<title>Property List - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Property_List"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Property_List&amp;action=history"/>
	<updated>2026-05-27T08:45:43Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Property_List&amp;diff=2465511&amp;oldid=prev</id>
		<title>imported&gt;Power of Knowledge 7: /* growthexperiments-addlink-summary-summary:1|0|0 */</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Property_List&amp;diff=2465511&amp;oldid=prev"/>
		<updated>2025-06-30T08:35:04Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;growthexperiments-addlink-summary-summary:1|0|0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Dateiformat&lt;br /&gt;
| Name =&lt;br /&gt;
| Icon = &lt;br /&gt;
| Logo = &lt;br /&gt;
| Screenshot = &lt;br /&gt;
| Beschreibung = &lt;br /&gt;
| Dateiendung = .plist&lt;br /&gt;
| MIME = application/x-plist&lt;br /&gt;
| MIME-Anm = &lt;br /&gt;
| MagischeZahl = &lt;br /&gt;
| MagischeZahlNotation = &lt;br /&gt;
| MagischeZahlHex = &lt;br /&gt;
| Entwickler = [[NeXT]] und [[Apple]]&lt;br /&gt;
| Veröffentlicht = &lt;br /&gt;
| LetzteVersion = &lt;br /&gt;
| LetzteVersionDatum = &lt;br /&gt;
| Art = Dateiformat zur Serialisierung assoziativer [[Array (Datentyp)|Arrays]] (&amp;#039;&amp;#039;„Dictionaries“&amp;#039;&amp;#039;)&lt;br /&gt;
| Container für = &lt;br /&gt;
| Enthalten in = &lt;br /&gt;
| Erweitert von = &lt;br /&gt;
| Erweitert zu = &lt;br /&gt;
| Standard = &lt;br /&gt;
| Website = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Eine &amp;#039;&amp;#039;&amp;#039;Property List&amp;#039;&amp;#039;&amp;#039; (dt. &amp;#039;&amp;#039;Liste von Eigenschaften&amp;#039;&amp;#039;), umgangssprachlich auch &amp;#039;&amp;#039;&amp;#039;plist&amp;#039;&amp;#039;&amp;#039;(-Datei, „P-List“ ausgesprochen) oder &amp;#039;&amp;#039;&amp;#039;Property-Liste&amp;#039;&amp;#039;&amp;#039;, dient dazu, [[Daten]] strukturiert abzulegen. Technisch geschieht dies durch die [[Serialisierung]] von [[Assoziatives Datenfeld|assoziativen Datenfeldern]] (englisch auch &amp;#039;&amp;#039;dictionaries&amp;#039;&amp;#039;). In der Regel tragen solche Dateien die Endung &amp;lt;code&amp;gt;.plist&amp;lt;/code&amp;gt; im Dateinamen.&lt;br /&gt;
&lt;br /&gt;
Das Property-List-Format wurde seinerzeit für [[NeXTStep]] entwickelt und in [[macOS]], [[iOS (Betriebssystem)|iOS]] und Co. übernommen; auch in [[GNUstep]], dem freien [[OpenStep]]- bzw. [[Cocoa (API)|Cocoa]]-Nachbau, kommen sie zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
== Funktionen ==&lt;br /&gt;
&lt;br /&gt;
Sie eignen sich besonders dafür, serialisierte Objekte bzw. Eigenschaften (&amp;#039;&amp;#039;properties&amp;#039;&amp;#039;) einer [[Klasse (Objektorientierung)|Klasse]] aufzunehmen.&lt;br /&gt;
&lt;br /&gt;
Das Format unterscheidet die Datentypen &amp;#039;&amp;#039;[[Binärcode|Data]]&amp;#039;&amp;#039;, &amp;#039;&amp;#039;[[Zeichenkette|String]]&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Date&amp;#039;&amp;#039;, &amp;#039;&amp;#039;[[Ganze Zahl|Integer]]&amp;#039;&amp;#039; und &amp;#039;&amp;#039;[[Gleitkommazahl|Float]]&amp;#039;&amp;#039; sowie &amp;#039;&amp;#039;[[Array (Datentyp)|Arrays]]&amp;#039;&amp;#039; und &amp;#039;&amp;#039;[[Assoziatives Datenfeld|Dictionaries]]&amp;#039;&amp;#039;.&amp;lt;ref&amp;gt;{{Literatur |Autor=Hauser, Dominik, Rodewig, Klaus M. 1971-, Galileo Press |Titel=Apps programmieren mit Swift |Auflage=2., aktualisierte Auflage |Ort=Bonn |ISBN=9783836260688}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die beiden heute gültigen plist-Formate sind auf [[XML]]-Basis beziehungsweise [[Binärcode|binär]]. Sie werden vom System gleichermaßen unterstützt, sind zueinander kompatibel und können ineinander konvertiert werden.&lt;br /&gt;
&lt;br /&gt;
Die Dateien werden häufig genutzt, um Einstellungen des Benutzers zu speichern. Weiterhin besitzt jedes [[Application Bundle]] mindestens eine Datei namens &amp;lt;code&amp;gt;Info.plist&amp;lt;/code&amp;gt;, in der Informationen über das Bundle enthalten sind.&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
&lt;br /&gt;
In NeXTStep wurde ein [[Dateiformat]] zur Serialisierung assoziativer Arrays (im Grunde verschachtelte Werte, die einen Namen für die Zuweisung oder eine ID haben) eingeführt. Entwickler konnten so einfach z.&amp;amp;nbsp;B. Einstellungen oder Informationen abspeichern und auslesen. Da macOS ein Nachfahre von NeXTStep ist, übernahm es auch das plist-Datenformat. Apple erklärte damals das bisherige plist-Format von NeXTStep als ungültig und führte ein neues auf der Basis von XML ein, das den Funktionsumfang seines Vorgängers übernahm und gleichzeitig neue Datentypen hinzufügte. GNUstep, eine freie Implementierung von OpenStep bzw. Cocoa, übernahm das alte Format aus Gründen der Kompatibilität und erweiterte es um zwei Datentypen.&lt;br /&gt;
&lt;br /&gt;
== Darstellung ==&lt;br /&gt;
&lt;br /&gt;
Da die Daten, die in diesen Dateien gespeichert werden können, sehr abstrakt sind, lassen sie sich auf vielfältige Art und Weise speichern. Im Lauf der Zeit hat sich das Format der Dateien verändert; so nutzte NeXTStep ein anderes Format, als macOS und GNUstep dies tun.&lt;br /&gt;
&lt;br /&gt;
=== NeXTStep ===&lt;br /&gt;
Die plist-Dateien unter NeXTStep waren darauf ausgelegt, von Menschen lesbar und von Hand veränderbar zu sein; deswegen wurden sie als [[ASCII]] serialisiert.&lt;br /&gt;
&lt;br /&gt;
Die Datentypen wurden so dargestellt:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Datentyp&lt;br /&gt;
!Darstellung&lt;br /&gt;
|-&lt;br /&gt;
| [[Zeichenkette|Strings]]&lt;br /&gt;
|&lt;br /&gt;
 &amp;quot;Ein Beispiel-String&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Binärdaten]]&lt;br /&gt;
|&lt;br /&gt;
 &amp;amp;lt; &amp;#039;&amp;#039;&amp;lt;nowiki&amp;gt;[Hexadezimal-Code in ASCII]&amp;lt;/nowiki&amp;gt;&amp;#039;&amp;#039; &amp;amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Array (Datentyp)|Arrays]]&lt;br /&gt;
|&lt;br /&gt;
 (&amp;quot;1&amp;quot;, &amp;quot;2&amp;quot;, &amp;quot;3&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;Dictionaries&amp;#039;&amp;#039; / [[Assoziatives Datenfeld|assoziative Arrays]]&lt;br /&gt;
|&lt;br /&gt;
 {&lt;br /&gt;
     &amp;quot;key&amp;quot; = &amp;quot;value&amp;quot;;&lt;br /&gt;
     ...&lt;br /&gt;
 }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ein Nachteil dieses Formates war, dass keine &amp;#039;&amp;#039;NSValue&amp;#039;&amp;#039; ([[Integer (Datentyp)|Zahl]], [[Boolesche Variable|Boolean]] usw.) gespeichert werden konnten.&lt;br /&gt;
&lt;br /&gt;
=== GNUstep ===&lt;br /&gt;
GNUstep übernahm das plist-Format von NeXTStep, nahm aber einige Änderungen vor. Zum einen wurden NSValues unterstützt (dargestellt als ASCII), zum anderen wurde der neue Datentyp &amp;#039;&amp;#039;NSDate&amp;#039;&amp;#039; hinzugefügt (Darstellung: &amp;lt;code&amp;gt;&amp;amp;lt;*DYYYY-MM-DD HH:MM:SS timezone&amp;amp;gt;&amp;lt;/code&amp;gt;). Damit war es nun möglich, auch das Datum in einer Property List zu speichern.&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann GNUstep das plist-Format von macOS lesen und schreiben.&amp;lt;ref&amp;gt;[https://www.gnustep.org/resources/documentation/Developer/Base/Reference/NSPropertyList.html NSPropertyListSerialization class documentation]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== macOS ===&lt;br /&gt;
Zwar kann macOS das alte NeXTStep-Format noch immer lesen, aber bei seiner Einführung (damals [[Mac OS X 10.0]]) wurde das NeXTStep-Format als veraltet deklariert und ein neues, auf XML basierendes plist-Format eingeführt. Apple veröffentlichte dafür eine [[Dokumenttypdefinition]].&amp;lt;ref&amp;gt;[https://www.apple.com/DTDs/PropertyList-1.0.dtd plist-DTD]. Abgerufen am 13. November 2011.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da XML-Dateien zwar von Menschen lesbar, aber dadurch sehr speicherineffizient sind, wurde mit [[Mac OS X 10.2]] ein neues binäres plist-Format eingeführt. Die beiden Formate sind kompatibel und können mit &amp;lt;code&amp;gt;plutil&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;[https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/plist.5.html The plist(5) manual page] auf developer.apple.com. Abgerufen am 13. November 2011.&amp;lt;/ref&amp;gt; umgewandelt werden.&lt;br /&gt;
&lt;br /&gt;
XML-plist-Dateien können grundsätzlich per Hand bearbeitet werden. Da dies aber ab einer gewissen Komplexität ein mühevolles Unterfangen ist, lieferte Apple mit dem [[Xcode]]-Paket bis Version 3.2 den &amp;#039;&amp;#039;Property List Editor&amp;#039;&amp;#039; mit aus. Ab Xcode 4.0 ist der Editor in die Xcode-IDE (&amp;#039;&amp;#039;[[Integrierte Entwicklungsumgebung]]&amp;#039;&amp;#039;) integriert. Des Weiteren ist es möglich, mittels [[AppleScript]] durch Aufrufen von &amp;lt;code&amp;gt;defaults&amp;lt;/code&amp;gt; ebenfalls plist-Dateien zu lesen und zu schreiben.&lt;br /&gt;
&lt;br /&gt;
Ab [[Mac OS X Lion]] bietet &amp;lt;code&amp;gt;plutil&amp;lt;/code&amp;gt; auch die Möglichkeit, plist-Dateien in [[JavaScript Object Notation|JSON]] umzuwandeln und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
Das Kommandozeilen-Tool &amp;lt;code&amp;gt;defaults&amp;lt;/code&amp;gt;&amp;lt;ref&amp;gt;[https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/defaults.1.html The defaults(1) manual page] auf developer.apple.com. Abgerufen am 13. November 2011.&amp;lt;/ref&amp;gt; war ursprünglich dafür gedacht, Einstellungen von Programmen über die [[Shell (Betriebssystem)|Shell]] ändern zu können. Da diese Dateien jedoch in aller Regel plist-Dateien sind, lassen sich mit dem Tool auch beliebige plist-Dateien verändern.&lt;br /&gt;
&lt;br /&gt;
Im Laufe der Zeit haben Entwickler für die verschiedensten Programmiersprachen plist-Editoren und Bibliotheken entwickelt, die plist-Dateien serialisieren und in Datentypen der jeweiligen Sprache konvertieren können.&lt;br /&gt;
&lt;br /&gt;
In plist-Dateien im XML-Format sind für die folgenden Datentypen (und die zugehörigen [[Cocoa Touch|Cocoa]]- und [[Core Foundation|Core-Foundation]]-Typen) die folgenden Tags gültig:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Datentyp&lt;br /&gt;
!XML-Tag&lt;br /&gt;
!Cocoa-Typ&amp;lt;ref&amp;gt;[http://developer.apple.com/documentation/Cocoa/Conceptual/PropertyLists/index.html#//apple_ref/doc/uid/10000048i Property List Programming Guide for Cocoa]. Abgerufen am 13. November 2011.&amp;lt;/ref&amp;gt;&lt;br /&gt;
!CoreFoundation-Typ&amp;lt;ref&amp;gt;[http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFPropertyLists/CFPropertyLists.html Property List Programming Topics for Core Foundation]. Abgerufen am 11. November 2011.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| UTF-8-kodierte Zeichenkette&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;lt;string&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| NSString&lt;br /&gt;
| CFString&lt;br /&gt;
|-&lt;br /&gt;
| Dezimalzahlen (als String)&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;lt;real&amp;amp;gt;&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;&amp;amp;lt;integer&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| NSNumber&lt;br /&gt;
| CFNumber&lt;br /&gt;
|-&lt;br /&gt;
| Boolean (wahr/falsch)&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;lt;true /&amp;amp;gt;&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;&amp;amp;lt;false /&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| NSNumber&lt;br /&gt;
| CFBoolean&lt;br /&gt;
|-&lt;br /&gt;
| String ([[ISO 8601|ISO-8601]]-formatiert)&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;lt;date&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| NSDate&lt;br /&gt;
| CFDate&lt;br /&gt;
|-&lt;br /&gt;
| [[Base64]]-kodierte Daten&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;lt;data&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| NSData&lt;br /&gt;
| CFData&lt;br /&gt;
|-&lt;br /&gt;
| Array&amp;lt;br /&amp;gt;(kann beliebig viele Unterelemente aufnehmen)&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;lt;array&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| NSArray&lt;br /&gt;
| CFArray&lt;br /&gt;
|-&lt;br /&gt;
| Assoziatives Array/&amp;#039;&amp;#039;dictionary&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;(abwechselnd &amp;lt;code&amp;gt;&amp;amp;lt;key&amp;amp;gt;&amp;lt;/code&amp;gt;-Tags und plist-Elemente)&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;amp;lt;dict&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| NSDictionary&lt;br /&gt;
| CFDictionary&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&amp;#039;&amp;#039;Bibliotheken die XML- und binäre plist-Dateien lesen und schreiben können:&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/animetrics/PlistCpp PlistCpp] [[Plattformunabhängigkeit|Cross-platform]]-Bibliothek in [[C++]], [[MIT-Lizenz]].&lt;br /&gt;
* [https://github.com/animetrics/PlistCS PlistCS] [[C-Sharp|C#]]-Bibliothek, MIT-Lizenz.&lt;br /&gt;
* [https://rubyforge.org/projects/cfpropertylist/ cfpropertylist for Ruby] [[Ruby (Programmiersprache)|Ruby]]-Bibliothek, Ruby-Lizenz.&lt;br /&gt;
* [https://github.com/rodneyrehm/CFPropertyList CFPropertyList for PHP] [[PHP]]-Bibliothek, MIT-Lizenz.&lt;br /&gt;
* [https://plist.sf.net/ Property List Library] [[Java (Programmiersprache)|Java]]-Bibliothek, [[LGPL]]-Lizenz.&lt;br /&gt;
* [https://code.google.com/p/plist com.dd.plist] Java-Bibliothek, MIT-Lizenz&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:NeXT]]&lt;br /&gt;
[[Kategorie:MacOS-Betriebssystemkomponente]]&lt;br /&gt;
[[Kategorie:GNUstep]]&lt;br /&gt;
[[Kategorie:Datenserialisierungformat]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Power of Knowledge 7</name></author>
	</entry>
</feed>