قائمة العقارات

في أطر البرمجة macOS و iOS و NeXTSTEP و GNUstep ، تُعد ملفات قوائم الخصائص ملفات تخزن الكائنات المُسلسلة . تستخدم ملفات قوائم الخصائص امتداد اسم الملف ، ولذلك يُشار إليها غالبًا باسم ملفات p-list ..plist

تُستخدم ملفات قوائم الخصائص غالبًا لتخزين إعدادات المستخدم. كما تُستخدم أيضًا لتخزين معلومات حول الحزم والتطبيقات ، وهي مهمة كانت تُؤدّى بواسطة فرع الموارد في نظام التشغيل Mac OS القديم.

تُستخدم قوائم الخصائص أيضًا لسلاسل الترجمة في عملية التطوير. تستخدم هذه الملفات الامتدادين ` .strings.plist` و` .plist` .stringsdict. الأول هو ملف plist قديم الطراز "مُختزل" يحتوي على قاموس واحد فقط بدون الأقواس (انظر propertyListFromStringsFileFormat[ 1 ] بينما الثاني هو ملف plist كامل. يستخدم Xcode أيضًا امتدادًا لملفات plist القديمة الطراز المستخدمة كملفات مشاريع..pbxproj

التمثيلات

بما أن البيانات الممثلة بقوائم الخصائص مجردة إلى حد ما، يمكن تنفيذ تنسيق الملف الأساسي بطرق عديدة. على وجه التحديد، استخدم برنامج NeXTSTEP تنسيقًا واحدًا لتمثيل قائمة الخصائص، بينما قدمت أطر عمل GNUstep و macOS اللاحقة تنسيقات مختلفة.

الخطوة التالية

في نظام NeXTSTEP ، صُممت قوائم الخصائص لتكون قابلة للقراءة البشرية والتحرير اليدوي، ثم تُحوّل إلى ASCII بصيغة تشبه إلى حد ما لغة البرمجة . وقد استُخدم هذا التنسيق نفسه في نظام OPENSTEP .

  • يتم تمثيل السلاسل النصية بأسلوب C الحرفي: "This is a plist string\n"; يُسمح بالسلاسل النصية الأبسط وغير المقتبسة طالما أنها تتكون من أحرف وأرقام وواحد من _$/:.- .
  • يتم تمثيل البيانات الثنائية على النحو التالي: . يتم تجاهل المسافات والتعليقات بين رموز السداسي العشري المزدوجة.<[hexadecimal codes in ASCII]>
  • يتم تمثيل المصفوفات( "1", "2", "3" ) على النحو التالي: . يُسمح بوجود فواصل زائدة في نهاية المصفوفة.
  • يتم تمثيل القواميس{ "key" = "value"; ... } على النحو التالي: . يجب أن يكون الجانب الأيسر سلسلة نصية، ولكن يمكن أن يكون بدون علامات اقتباس.
  • التعليقات مسموحة على النحو التالي: /* This is a comment */و // This is a line comment.
  • كما هو الحال في لغة C، فإن المسافات البيضاء لا تُعتبر ذات أهمية كبيرة في بناء الجملة. وتنتهي عبارات القيمة بفاصلة منقوطة.

من عيوب تنسيق قائمة خصائص NeXT الأصلي أنه لا يستطيع تمثيل كائن NSValue (رقم، قيمة منطقية، إلخ). ونتيجةً لذلك، كان لا بد من تحويل هذه القيم إلى سلسلة نصية، ثم استعادتها بشكل تقريبي بواسطة التطبيق. [ 2 ] ومن العيوب الأخرى عدم وجود ترميز رسمي مُحدد لـ 8 بت. [ 3 ]

تُستخدم أداة defaults، التي طُرحت في برنامج OPENSTEP (1996)، لمعالجة ملفات plist المُخصصة لتخزين الإعدادات (المعروفة باسم defaults في NeXTSTEP ، ومن هنا جاء الاسم) عبر سطر الأوامر من خلال نطاق الإعدادات الخاص بها، كما يُمكن استخدام هذه الأداة لتحرير أي ملف plist. وقد حلت هذه الأداة محل ثلاثة أوامر أقدم (dread وdwrite وdremove). [ 4 ]

برنامج GNUstep

تعتمد GNUstep تنسيق NeXTSTEP، مع إضافات لتمثيل أنواع بيانات NSValue وNSDate. تأخذ المدخلات الجديدة المُصنفة الشكل < * T ... > ، حيث T هو رمز نوع مكون من حرف واحد. على سبيل المثال، يتم تمثيل قيمة NSValue من النوع المنطقي YES بالصيغة < *BY > ، ويتم تمثيل كائنات NSDate بالصيغة . [ 5 ] [ 6 ] يمكن أيضًا استخدام تنسيق base64 الأكثر كفاءة للبيانات الثنائية بالشكل < [ b64... ] > . كما تم حل مشكلة 8 بت ضمنيًا، حيث تستخدم معظم التطبيقات UTF-8.<*DYYYY-MM-DD HH:MM:SS +ZZZZ>

يحتوي GNUstep أيضًا على تنسيق ثنائي خاص به، وهو NSPropertyListGNUstepBinaryFormat ، المُنفَّذ في NSSerialization . يُعرَّف هذا التنسيق بشكل تكراري مثل التنسيقات النصية، مع علامة نوع أحادية البايت تسبق بعض البيانات. ويدعم شكلًا من أشكال تخزين السلاسل النصية عبر مفتاح shouldBeCompact الخاص بامتداد GS . [ 7 ]

يوجد في GNUstep معالجان مستقلان نسبيًا لملفات plist: CFPropertyList في libs-core-base (CoreFoundation)، و NSPropertyList في libs-base (Foundation Kit). يدعم كلاهما الصيغتين الثنائية وXML المستخدمتين في macOS إلى حد ما، لكن الأخير أكثر شمولًا. على سبيل المثال، لا يتم التعامل مع صيغتي GNUstep الخاصتين إلا في الأخير. [ 8 ]

يوفر GNUstep مجموعة من أدوات سطر الأوامر plist المستندة إلى NSPropertyList ، بما في ذلك إصدار من pl [ 9 ] والقيم الافتراضية . [ 4 ]

نظام التشغيل macOS

على الرغم من أن نظام macOS يدعم قراءة تنسيق NeXTSTEP، إلا أن شركة Apple تتجاهله لصالح تنسيقين جديدين خاصين بها، أحدهما قائم على XML والآخر ثنائي. كما تمتلك Apple تنسيق JSON متوافق جزئيًا ( NSJSONSerialization ).

تاريخ

في نظام التشغيل Mac OS X 10.0 ، تم إيقاف استخدام تنسيق NeXTSTEP ، وتم تقديم تنسيق XML جديد ، مع تعريف نوع المستند (DTD) عام من قِبل Apple . يدعم تنسيق XML الأحرف غير ASCII وتخزين كائنات NSValue (والتي، على عكس تنسيق قائمة خصائص ASCII الخاص بـ GNUstep، لا يدعمها تنسيق قائمة خصائص ASCII الخاص بـ Apple). [ 10 ]

نظرًا لأن ملفات XML ليست الوسيلة الأمثل لتخزين البيانات بكفاءة عالية من حيث المساحة، فقد قدم نظام التشغيل Mac OS X 10.2 تنسيقًا جديدًا حيث تُخزن ملفات قوائم الخصائص كملفات ثنائية. بدءًا من نظام التشغيل Mac OS X 10.4 ، أصبح هذا التنسيق هو التنسيق الافتراضي لملفات التفضيلات. في نظام التشغيل Mac OS X 10.7 ، أُضيف دعم قراءة وكتابة الملفات بتنسيق JSON . مع ذلك، لا يتوافق تنسيق JSON وقوائم الخصائص بشكل كامل. على سبيل المثال، تحتوي قوائم الخصائص على أنواع بيانات وتاريخ أصلية، لا يدعمها تنسيق JSON. في المقابل، يسمح JSON nullبقيم فارغة بينما لا تدعم قوائم الخصائص القيم الفارغة الصريحة.

الأدوات

لا تزال أداة الإعدادات الافتراضية القديمة من NeXTSTEP متاحة. يوفر الأمر /usr/libexec/PlistBuddy محرر ملفات plist تفاعلي. ويمكن أيضًا برمجته. [ 11 ]

يمكن استخدام أداة plutil (التي أُضيفت في نظام التشغيل Mac OS X 10.2 ) للتحقق من بنية قوائم الخصائص، أو لتحويل ملف قائمة خصائص من تنسيق إلى آخر. كما تدعم تحويل ملفات plist إلى كائنات Objective-C أو Swift. [ 12 ] ومثل Cocoa NSPropertyListSerialization التي بُنيت عليها، فإنها تقبل مدخلات "تقليدية"، ولكنها لا تُحوّل إلى هذا النوع. (يُصدر Cocoa NSSerializer، الذي كان يُستخدم قبل Mac OS X 10.2، مخرجات تقليدية).

تم تقديم أداة pl في نظام التشغيل Mac OS X الإصدار 10.5. تأخذ هذه الأداة أي مُدخلات وتحاول إنشاء ملفات plist "قديمة الطراز". [ 13 ] [ أ ] كما هو الحال في إصدار GNUstep، يبدو أنها تستخدم خاصية الوصف لأنواع Foundation الموجودة في ملفات plist، والتي حددتها Apple لإنتاج ملفات plist صالحة قديمة الطراز. [ ب ]

فيما يتعلق بالبنية الداخلية، توفر Apple محللًا مفتوح المصدر للصيغ القديمة، وXML، والثنائية في كود C Core Foundation الخاص بها ، تحت اسم CFPropertyList. مع ذلك، تستخدم جميع الأدوات ومعظم أجزاء النظام محلل NSPropertyList مغلق المصدر من Obj-C Foundation Kit. أما إعادة التنفيذ بلغة Swift فهي مفتوحة المصدر، ولكن لا يُضمن تطابقها التام.

شكل

يمكن تعديل قوائم خصائص XML و JSON يدويًا في أي محرر نصوص. بالإضافة إلى ذلك، توفر Apple دعمًا في Xcode لتحرير قوائم الخصائص في عارض/محرر هرمي يمكنه التعامل مع قوائم الخصائص المنسقة بصيغة ثنائية أو XML ، ولكن ليس JSON . بدءًا من نظام التشغيل Mac OS X 10.4 ، توفر Apple واجهة AppleScript لقراءة ملفات قوائم الخصائص من خلال تطبيق أحداث النظام. بدءًا من نظام التشغيل Mac OS X 10.5 ، توفر Apple واجهة AppleScript لتحرير وإنشاء وكتابة ملفات قوائم الخصائص أيضًا. [ 14 ]

بالنسبة لتنسيق XML، فإن العلامات وفئات Foundation ذات الصلة وأنواع CoreFoundation وتنسيقات تخزين البيانات هي كما يلي:

الصف التأسيسينوع CoreFoundationعلامة XMLتنسيق التخزين
NSStringسلسلة CF< سلسلة نصية >سلسلة مشفرة بـ UTF-8
رقم NSNumberرقم CF< حقيقي >قيمة الفاصلة العائمة. يدعم الترميز الأسي والقيم الخاصة NaN ( nan ) و Infinity ( inf ، +inf ، -inf ، أو infinity ). جميع هذه الصيغ غير حساسة لحالة الأحرف.
< عدد صحيح >قيمة عددية صحيحة بالنظام العشري ( 255 ) أو بالنظام الست عشري ( 0xFF ). ولا يفرق النظام الأخير بين الأحرف الكبيرة والصغيرة.
رقم NSNumberCFBoolean< صحيح / > ، < خطأ / >لا توجد بيانات (الوسم فقط)
تاريخ NSDateتاريخ CF< التاريخ >سلسلة منسقة وفقًا لمعيار ISO 8601
بيانات NSDataبيانات CF< بيانات >البيانات المشفرة بنظام Base64
NSArrayمصفوفة الخلايا< مصفوفة >يمكن أن يحتوي على أي عدد من العناصر الفرعية. يمكن أن يكون فارغًا.
قاموس NSDictionaryقاموس CF< قاموس >يتم تبديل علامات <key> وعلامات عناصر plist. يمكن أن تكون فارغة .

تم توثيق تنسيق الملف الثنائي في قسم التعليقات ضمن ملف مصدر كود C الخاص بـ Core Foundation ( CF/CFBinaryPList.c ) لتطبيق Apple مفتوح المصدر لملفات plist الثنائية في مكتبة Foundation الخاصة بها. [ 15 ] تصف Apple هذا التطبيق بأنه غير شفاف في صفحة دليل plist(5)، [ 16 ] مما يعني أنه لا يُنصح بالاعتماد على هذا التنسيق. في تنسيق الملف الثنائي، يكون الرقم السحري (أول بضعة بايتات من الملف التي تشير إلى أنه ملف plist صالح) هو النص bplist ، متبوعًا ببايتين يشيران إلى إصدار التنسيق.

يمكن للملف الثنائي تخزين بعض المعلومات التي لا يمكن تضمينها في تنسيقات ملفات XML أو JSON. تتكون أنواع البيانات الثنائية للمصفوفة والمجموعة والقاموس من مؤشرات - مدخلات objref و keyref - التي تشير إلى جدول الكائنات في الملف. هذا يعني أن ملفات plist الثنائية يمكنها تسجيل حقيقة أن - على سبيل المثال - مصفوفة وقاموس منفصلين تم تحويلهما إلى ملف يحتويان على نفس عنصر البيانات المخزن فيهما. لا يمكن تسجيل ذلك في ملف XML. سيؤدي تحويل مثل هذا الملف الثنائي إلى وضع نسخة من عنصر البيانات في ملف XML. بالإضافة إلى ذلك، يحتوي الملف الثنائي على نوع UID يُستخدم لتحديد عناصر البيانات عند تحويلها. فيما يلي القائمة الكاملة للبيانات التي يمكن تخزينها، مأخوذة من ملف مصدر كود C:

تنسيقات كائنات plist الثنائية (اعتبارًا من CoreFoundation 1153) [ 15 ]
الصف التأسيسينوع CoreFoundationنوع الكائنبايت العلامةالبيانات المشفرة
لا شيءلا شيءnull (v"1?"+)0000 0000غير متوفر
رقم NSNumberCFBooleanمنطقي0000 1000 (خطأ) 0000 1001 (صحيح)غير متوفر
NSURLCFURLurl (v"1?"+)0000 1100 (سلسلة أساسية) 0000 1101 (سلسلة)string: سلسلة عنوان URL في ترميز متكرر (كما في "تنسيق كائن السلسلة؟")؛ base string: نفس الشيء، ولكن مع ترميز عنوان URL الأساسي أولاً.
NSUUIDCFUUIDuuid (v"1?"+)0000 111016 بايت من UUID
يملأ0000 1111لا شيء - مجرد حشوة
رقم NSNumberرقم CFعدد صحيح٠٠٠١ nnnعدد البايتات هو 2^nnnn ، بايتات ذات ترتيب كبير (1 أو 2 أو 4 أو 8)
رقم NSNumberرقم CFحقيقي0010 nnnعدد البايتات هو 2^nnnn ، بايتات بيغ-إنديان (4 أو 8)
تاريخ NSDateتاريخ CFتاريخ0011 0011يتبع ذلك بايتات عائمة بحجم 8 بايت، بنظام big-endian؛ ثواني من 1/1/2001 ( حقبة Core Data )
بيانات NSDataبيانات CFبيانات0100 nnnn [int]يمثل nnnn عدد البايتات، إلا إذا كان 1111، فحينها يتبعه عدد صحيح متبوعًا بالبايتات.
NSStringسلسلة CFخيط0101 nnnn [int]سلسلة ASCII، nnnn هو عدد الأحرف، وإلا 1111 ثم عدد صحيح، ثم بايتات
NSStringسلسلة CFخيط0110 nnnn [int]سلسلة يونيكود، nnnn هو عدد الأحرف، وإلا 1111 ثم عدد صحيح، ثم عدد صحيح كبير البايتات uint16_t
NSStringسلسلة CFسلسلة (v"1?"+)0111 nnnn [int]سلسلة UTF-8، nnnn هو عدد الأحرف، وإلا 1111 ثم عدد صحيح، ثم بايتات
معرف المستخدم الفريد1000 nnnيمثل nnnn+1 عدد البايتات الكبيرة (1 أو 2 أو 4 أو 8). وهو عدد صحيح غير مُوقّع، يُنتج فقط بواسطة NSKeyedArchiver (انظر أدناه). [ 17 ]
NSArrayمصفوفة الخلايامصفوفة1010 nnnn [int]objref* nnnn هو count، إلا إذا كان '1111'، فحينها يكون int count هو القيمة.
مجموعة مرتبةordset (v"1?"+)1011 nnnn [int]objref* nnnn هو count، إلا إذا كان '1111'، فحينها يكون int count هو القيمة.
NSSetمجموعة CFSetمجموعة (v"1?"+)1100 nnnn [int]objref* nnnn هو count، إلا إذا كان '1111'، فحينها يكون int count هو القيمة.
قاموس NSDictionaryقاموس CFقاموس1101 nnnn [int]keyref* objref* nnnn هو count، إلا إذا كان '1111'، فحينها يكون int count هو التالي

لاحظ وجود علامة "1؟"+ في العديد من الأنواع. هذا يعني أن بايت العلامة موجود فقط في الملفات التي لا يقل إصدار تنسيقها عن الرقم السحري "1؟". إن الطريقة الدقيقة لتحليلها أقل وضوحًا من طريقة تحليل الأنواع القديمة، لأن تطبيق CFBinaryPlist لا يتعامل إلا مع الإصدار "0؟". عمليًا، لا يتم مصادفة هذه الأنواع أبدًا، لأن NSKeyedArchiver قادر بالفعل على التقاط هذه المعلومات.

يتبع جدول الإزاحات جدول الكائنات، والذي يتبعه بعد ذلك ملحق يحتوي على معلومات حول حجم وموقع الجدولين.

تحويل البيانات إلى قائمة plist

بما أن قوائم الخصائص لا تشمل جميع المعلومات وأنواع البيانات اللازمة لوصف أي كائن، فغالبًا ما تُضاف طبقة إضافية من التشفير وفك التشفير. تُجرّد مواصفات OpenStep عملية تسلسل أي كائن NSObject ضمن بروتوكول NSCoding . يمكن لأي فئة تُطبّق هذا البروتوكول أن تُسلسل مثيلاتها بواسطة فئة فرعية من NSCoder إلى تنسيق آخر. [ 18 ] يوجد مُشفّران رئيسيان لغرض تسلسل الكائنات إلى قوائم الخصائص (plists):

  • تُحوّل NSArchiver كائنًا إلى كتلة من البيانات الثنائية، على غرار بنية مُوسومة. هذه الفئة جزء من OpenStep، مع أنه لم يتم تحديد تنسيق مُحدد لها. عمليًا، يُمكن استخدامها لتسلسل كائن إلى ملف (دون الحاجة إلى ملف plist)، أو لتضمين البيانات في ملف plist. يجب قراءتها وكتابتها بنفس ترتيب الكتابة. يُلغي إدخال NSKeyedArchiver استخدامها.
  • تقوم أداة NSKeyedArchiver ، التي طُرحت في نظام التشغيل Mac OS X 10.2، بتحويل الكائن إلى NSDictionary . يتمثل التحسين الرئيسي لهذا التنسيق للمبرمجين في أنه لا يتم الوصول إلى العناصر بترتيب ثابت، بل باستخدام مفاتيح نصية. داخليًا، تُعيد هذه الأداة إلى حد ما تنسيق plist الثنائي من خلال تخزين مصفوفة جدول كائنات تُسمى $objects في القاموس. يتم الرجوع إلى كل شيء آخر، بما في ذلك معلومات الفئة، بواسطة مؤشر UID. يشير إدخال $top الموجود ضمن القاموس إلى الكائن ذي المستوى الأعلى الذي أراد المبرمج ترميزه. [ 17 ]

من بين مزايا استخدام أداة الأرشفة، إمكانية ترميز أنواع بيانات جديدة دون تغيير تنسيق ملف plist نفسه، وهي الطريقة المُفضلة لدى Apple لترميز عناصر مثل NSSets والقيم الفارغة. إلا أن تحليل التنسيقات يُعدّ أكثر تعقيدًا، إذ يتطلب الأمر اتباع طبقة إضافية حتى بالنسبة لبعض الفئات التي كان من المفترض أن تدعمها ملفات plist. وكما هو الحال في التنسيق الثنائي الذي يحتوي أيضًا على جدول كائنات، يُمكن إنشاء مراجع دائرية في NSKeyedArchiver . ونظرًا لعدم وجود نوع بيانات UID في XML، تُخزّن الأعداد الصحيحة في قاموس تحت المفتاح "CF$UID". [ 19 ]

تنشر Apple برنامج NSKeyedArchiver مفتوح المصدر ضمن Swift Corelibs Foundation؛ [ 20 ] ومثل برنامج Apple Foundation مغلق المصدر، يقتصر هذا البرنامج على تنسيقات الإخراج الثنائية وXML فقط. كما يتضمن بعض حالات الاختبار التي توضح نتائج التسلسل. [ 21 ] ويوفر GNUstep أيضًا تطبيقًا متوافقًا لا يفرض قيودًا على تنسيقات الإخراج. [ 22 ] [ 23 ]

لغة المسار

لا توجد لغة مسار موحدة ومعيارية لقوائم الخصائص كما هو الحال مع XPath لـ XML، ولكن توجد اتفاقيات غير رسمية تستخدمها برامج مختلفة.

  • توجد نسخة من صيغة النقطة في وسيطة keypath الخاصة بـ plutil من Apple . ويبدو أنها مشتقة من . [ 12 ](id) -[NSObject(NSKeyValueCoding) valueForKeyPath:]
  • يستخدم برنامج PlistBuddy تنسيقًا مختلفًا ، مع استخدام النقطتين الرأسيتين للفهرسة. [ 11 ]

لا يستطيع أي من التنسيقين التعبير عن مفتاح يحتوي على حرف فاصل.

منصات أخرى

ويندوز

على الرغم من أن ملفات plist معروفة بشكل أساسي على أنظمة Apple أو Darwin، بما في ذلك iOS و macOS، إلا أنها موجودة أيضًا على أجهزة كمبيوتر Windows عند تثبيت برامج Apple، مثل iTunes [ 24 ] أو Safari [ 25 ] . في Windows، تكون هذه الملفات عادةً ملفات ثنائية [ 26 ] ، مع أن بعض التطبيقات قد تُنشئ ملفات PLIST بتنسيقات أخرى.

في نظام التشغيل ويندوز، تُخزَّن ملفات plist الخاصة بشركة Apple في مجلد المستخدم الرئيسي ضمن المسار %USERPROFILE%\AppData\Roaming\Apple Computer . عادةً ما تُخزِّن هذه الملفات في ويندوز الإعدادات والتفضيلات ومعلومات أخرى، بدلاً من استخدام سجل ويندوز.

خيارات تعديل ملفات PLIST على نظام ويندوز ليست واسعة النطاق كما هي على نظام macOS. إذا كان الملف بصيغة XML أو JSON، فيمكن استخدام محرر نصوص مثل Notepad++ بحرص. توفر Apple برنامج plutil.exe ضمن حزمة "Apple Application Support" (الموجودة ضمن iTunes )، وهو مطابق تمامًا لنظيره في نظام macOS.

نظام التشغيل NetBSD

تم تقديمها في عام 2006 وإصدارها لأول مرة مع NetBSD#4.0 (2007) وهي مكتبة proplib، يمكن استخدامها لتسلسل البيانات بين النواة ومساحة المستخدم. وهي تُنفذ جزءًا من لغة XML plist. [ 27 ]

أحد الأمثلة على مستخدمي proplib هو المراجعة الثانية لإطار عمل sysmon envsys لمراقبة النظام .

تم أيضًا نقل مكتبة proplib الخاصة بنظام NetBSD إلى DragonFly في عام 2010، وهي متاحة منذ إصدار DragonFly BSD#2.8 . [ 28 ] [ 29 ]

متعدد المنصات

  • تتضمن نسخة فيسبوك مفتوحة المصدر من أداة بناء Xcode ، المسماة xcbuild ، مكتبة plist بالإضافة إلى plutil و PlistBuddy . هذه الأدوات المساعدة متعددة المنصات مكتوبة بلغة C++ . [ 30 ]
  • تحتوي لغة بايثون على وحدة مدمجة plistlibلقراءة وكتابة ملفات plist، سواءً بتنسيق XML الخاص بشركة Apple أو بتنسيق ثنائي (منذ الإصدار 3.4 من بايثون). [ 31 ] ProperTree هو محرر متعدد المنصات يستخدم هذه المكتبة. [ 32 ]
    • تتمتع مكتبة خارجية تسمى ccl-bplist بقدرة إضافية على التعامل مع معرّفات NSKeyedArchiver الفريدة. [ 19 ]
  • تحتوي لغة Goplist على حزمة تدعم أربعة أنواع من ملفات plist: OpenStep text، وGNUStep text، وApple XML، وApple Binary. كما أنها تتعامل مع معرّفات UID في تنسيقات XML والثنائية. [ 2 ]
  • تحتوي لغة دارت على مكتبة خارجية تسمى propertylistserialization والتي تتعامل أيضًا مع معرّفات NSKeyedArchiver الفريدة. [ 33 ]

انظر أيضاً

ملحوظات

  1. من غرائب ​​macOS pl أنه يضع حرف "D" غريبًا في stdout إذا قام شخص ما بكتابة الإدخال القياسي يدويًا وأنهى ذلك بـ ^D .
  2. فيdescriptionمكتبة Objective-C Foundation،NSDataتوجد مشكلة في الدالة حيث تُعيد تمثيلاً على شكل قاموس. أما مكتبة Swift Foundation مفتوحة المصدر فلا تعاني من هذه المشكلة.

مراجع

  1. "مرجع فئة NSString: propertyListFromStringsFileFormat" . GNUstep . تم الاسترجاع في 17 فبراير 2020 .
  2. 1 2 Howett, Dustin L. "Package plist" . godoc.org . عندما يواجه Unmarshal قائمة خصائص OpenStep، فإنه سيدخل في وضع تحليل مرن: لا يمكن لقوائم خصائص OpenStep تخزين سوى البيانات القديمة العادية كسلاسل نصية، لذلك سنحاول استعادة قيم الأعداد الصحيحة، والأعداد العشرية، والقيم المنطقية، وقيم التاريخ أينما كانت ضرورية.
  3. "قوائم خصائص ASCII القديمة" . مطورو Apple (دليل برمجة قوائم الخصائص) . تم الاطلاع عليه في 16 فبراير 2020 .
  4. 1 2دليل أوامر لينكس العامة من ManKier.comdefaults(1)  
  5. فريث-ماكدونالد، ريتشارد (2004). "توثيق فئة NSPropertyListSerialization" . GNUstep .
  6. "قوائم الخصائص" . GNUstepWiki .
  7. "وثائق تسلسل NSSerialization" . GNUstep .شفرة المصدر
  8. "الأنواع والثوابت: NSPropertyListFormat" . gnustep.org .
  9. دليل أوامر لينكس العامة من ManKier.compldes(1)  
  10. "appleexaminer.com: "ملفات PLIST"تمت أرشفة هذا النص من المصدر الأصلي في 19 فبراير 2014. تم الاطلاع عليه في 27 فبراير 2014 .
  11. 1 2دليل مدير نظام داروين وماك أو إسPlistBuddy(8)  
  12. 1 2دليل الأوامر العامة لنظامي التشغيل داروين وماك أو إسplutil(1)  
  13. دليل الأوامر العامة لنظامي التشغيل داروين وماك أو إسpl(1)  
  14. "AppleScript: قوائم الخصائص" . 24 أبريل 2009. مؤرشف من الأصل في 24 أبريل 2009.
  15. 1 2 "CF/CFBinaryPList.c" . أبل مفتوحة المصدر . 20 يونيو 2016. مؤرشف من الأصل في 28 نوفمبر 2023. تم الاطلاع عليه في 6 يناير 2020 .
  16. دليل تنسيقات الملفات لنظامي التشغيل داروين وماك أو إسplist(5)  
  17. 1 2 كيثنيس، أليكس (4 أبريل 2012). "منشور تقني: ملفات NSKeyedArchiver - ما هي، وكيف يمكنني استخدامها؟" . التحقيق الرقمي . نوع البيانات CF$UID في القائمة 2 هو قاموس بمفتاح واحد ("CF$UID") متبوعًا برقم صحيح (هذا التنسيق هو ما ستراه عند تمثيل قائمة الخصائص في XML؛ في التنسيق الثنائي الخام، يُعد نوع البيانات "UID" كيانًا منفصلاً لا يتطلب بنية القاموس). تمثل أنواع البيانات هذه مرجعًا إلى كيان آخر في مصفوفة "$objects". يُشير رقم CF$UID إلى موضع المصفوفة.
  18. "NSCoder.html" . مواصفات OpenStep .
  19. 1 2 مجموعة CCLForensics (15 يناير 2020). "cclgroupltd/ccl-bplist" . GitHub .
  20. أبل (26 يوليو 2024). "swiftlang/swift-corelibs-foundation: NSKeyedArchiver.swift" . جيت هاب .
  21. أبل (22 أبريل 2020). "swiftlang/swift-corelibs-foundation: Tests/Foundation/Resources" . جيت هاب .
  22. GNUstep (9 فبراير 2026). "وثائق NSKeyedArchiver" . وثائق GNUstep . تم الاطلاع عليها في 23 فبراير 2020 .
  23. GNUstep (7 نوفمبر 2024). "gnustep/libs-base: NSKeyedArchiver.m" . GitHub . تم الاطلاع عليه في 10 أبريل 2026 .
  24. هومرت، كريستيان؛ همفريز، جورجينا لويز (2022). "الفصل 6: قوائم الملكية". في: هومرت، كريستيان؛ باولاشيك، ديرك (محرران). الطب الشرعي للأجهزة المحمولة - دليل تنسيقات الملفات: تنسيقات الملفات الشائعة وأنظمة الملفات المستخدمة في الأجهزة المحمولة . تشام: دار نشر سبرينغر الدولية. الصفحات 157-165 . doi : 10.1007/978-3-030-98467-0_6 . ISBN  978-3-030-98467-0.
  25. "كيف يخزن متصفح الويب سفاري من آبل إعداداته على نظام ويندوز؟" . سوبر يوزر . 23 يوليو 2012.
  26. "microsoft/NSPlist: NSPlist" . 10 أغسطس 2025. تم الاسترجاع في 3 مايو 2019 عبر GitHub.
  27. ثورب، جيسون ر. "jsonn/src: proplib.3" . نت بي إس دي . لتسهيل استخدام مكتبة proplib في بيئات النواة، والأنظمة المستقلة، ومساحة المستخدم، فإن محلل proplib ليس محلل XML حقيقيًا. بل هو مُبرمج مسبقًا لتحليل التمثيل الخارجي لقائمة الخصائص فقط.
  28. ثورب، جيسون ر. "DragonFlyBSD: proplib.3" . DragonFly BSD عبر نسخة معدلة من NetBSD . ظهرت مكتبة كائنات حاوية الخصائص proplib لأول مرة في NetBSD 4.0.
  29. "proplib — مكتبة كائنات حاوية الخصائص". صفحات دليل DragonFly الإلكتروني . DragonFly BSD . 17 يناير 2011.
  30. فيسبوك (21 نوفمبر 2019). "facebook/xcbuild/Libraries/plist" . جيت هاب . تم الاسترجاع في 17 فبراير 2020 .
  31. مؤسسة برمجيات بايثون (31 مارس 2026). "plistlib — إنشاء وتحليل ملفات .plist لنظام التشغيل Mac OS X" . وثائق بايثون 3. تم الاطلاع عليه في 6 يناير 2020 .
  32. CorpNewt (26 ديسمبر 2025). "corpnewt/ProperTree: محرر ملفات plist بواجهة رسومية متعددة المنصات مكتوب بلغة بايثون" . GitHub . تم الاطلاع عليه في 10 أبريل 2026 .
  33. شركة إلكتريك بولت المحدودة (15 يناير 2025). "propertylistserialization | حزمة دارت" . pub.dev . تم الاطلاع عليه في 14 سبتمبر 2024 .