Списки свойств ASCII старого стиля

Платформы OpenStep, из которых получено Какао, использовали формат ASCII для хранения списков свойств. Эти файлы хранят информацию, эквивалентную информации в списках свойств XML, и все еще поддерживаются Какао, но для чтения только. Поддержка plist старого стиля остается прежде всего по устаревшим причинам. Вы читаете списки свойств старого стиля путем вызова propertyListFromData:mutabilityOption:format:errorDescription: метод NSPropertyListSerialization.

Списки свойств ASCII поддерживают четыре основных типа данных списка свойств: NSString, NSData, NSArray и NSDictionary. Следующие разделы описывают синтаксис ASCII для каждого из этих типов.

NSString

Строка включается в двойные кавычки, например:

"This is a string"

Кавычки могут быть опущены, если строка составлена строго алфавитно-цифровых символов и не содержит пробела (числа обрабатываются как строки в списках свойств). Хотя формат списка свойств использует ASCII для строк, обратите внимание на то, что то Какао использует Unicode. Так как строковые кодировки варьируются от области до области, это представление делает формат хрупким. Можно видеть, что строки содержат нечитабельные последовательности символов ASCII; они используются для представления символов Unicode.

NSData

Двоичные данные включаются в угловые скобки и кодируются в шестнадцатеричном ASCII. Пробелы проигнорированы. Например:

<0fbd777 1c2735ae>

NSArray

Массив включается в круглые скобки с элементами, разделенными запятыми. Например:

("San Francisco", "New York", "Seoul", "London", "Seattle", "Shanghai")

Элементы не должны все иметь того же типа (например, все строки) — но они обычно. Массивы могут содержать строки, двоичных данных, другие массивы или словари.

NSDictionary

Словарь включается в изогнутые фигурные скобки и содержит список ключей с их значениями. Каждая пара ключ/значение заканчивается точкой с запятой. Например:

{ user = wshakesp; birth = 1564; death = 1616; }

Отметьте пропуск кавычек для алфавитно-цифровых строк однословных. Значения не должны все быть тем же типом, потому что их типы обычно определяются любой программой, использует их. Словари могут содержать строки, двоичных данных, массивы и другие словари.

Ниже выборка более сложного списка свойств. Сам список свойств является словарем с ключами «AnimalSmells», «AnimalSounds», и т.д.; каждое значение является также словарем с парами ключ/значение.

{
    AnimalSmells = { pig = piggish; lamb = lambish; worm = wormy; };
    AnimalSounds = { pig = oink; lamb = baa; worm = baa;
                    Lisa = "Why is the worm talking like a lamb?"; };
    AnimalColors = { pig = pink; lamb = black; worm = pink; };
}