2016-02-26 7 views
3

Просто для начала, я действительно не знаю, что я делаю. Мне было поручено пройти стажировку, и я действительно учусь, когда иду. У меня есть несколько файлов plist, они состоят примерно из 22 элементов и перечисляют значения цветов. Мне нужно объединить все эти файлы в один, и я действительно не уверен, как это сделать. У меня есть определенная структура, в которой мне нужно пройти, и я действительно не уверен, как это сделать. Мне сказали открыть плиты в текстовом редакторе, а затем вставить весь необработанный код в один текстовый файл, это, похоже, не работает, так как я получаю только значения для первого слоя, вставленного в текстовый файл. Любая помощь будет приятной. Благодарю.Как объединить несколько файлов plist в один?

+0

Посмотрите на 'NSPropertyListSerialization'. Класс может преобразовывать файлы списка свойств в типы коллекции Foundation и наоборот. – vadian

ответ

1

Существует несколько способов справиться с этим. По умолчанию plist является специальной формой файла XML. Если вы выясните синтаксис, вы можете использовать текстовый редактор, чтобы объединить содержимое нескольких файлов вместе, но вы должны убедиться, что все правильно.

Файл plist имеет определенный заголовок для всего файла. Вы не могли просто скопировать/вставить несколько слоев вместе, потому что тогда у них будет повторяться этот заголовок.

Следующий способ сделать это программно. Если вы можете определить тип внешней коллекции, в которой находятся эти файлы (возможно, массив или словарь), вы можете написать несколько строк кода, которые читаются в каждом из plists как массивы, объединяет их с использованием кода NSArray (при условии, что они содержат массивы цветов), а затем сохранить объединенный массив обратно в новый слой. Как говорит Вадян, вы также можете использовать класс NSPropertyListSerialization. Это более распространенный способ обработки файлов plist, но это также сложнее и сложнее понять.

Третий способ сделать это в Xcode. Если вы щелкните правой кнопкой мыши на файле plist и выберите «open in Xcode», он должен предоставить вам редактор списка свойств Xcode. Затем вы можете копировать и вставлять содержимое файлов вместе и сохранять результаты в новом файле.

+0

благодарит за ответ! для меня копирование и вставка исходного кода в мою структуру, которая давалась, работала лучше всего! Проверьте мой ответ. – thatsnifty

+0

Если бы я ответил на ваш вопрос, вы должны принять ответ. Упреки также с благодарностью принимаются. –

0

Я понял! Сначала создайте структуру или используйте предоставленный вам шаблон. Я предлагаю открыть этот шаблон/структуру в Xcode, так как это облегчает переход между просмотром списка в виде plist и исходного кода. Откройте шаблон в качестве исходного кода. Затем откройте каждый из ваших plists в текстовом редакторе и скопируйте и вставьте код из ваших plists в соответствующую область в исходном коде шаблонов, тогда вы можете просмотреть его в Xcode в качестве списка свойств, чтобы убедиться, что он правильный. Единственное, что вы должны быть осторожны, это убедиться, что вы не получаете никаких ошибок. Иначе это отлично работает!

+0

Редактирование необработанного XML-файла более подвержено ошибкам. Так легче получить проблему форматирования. Xcode более безопасен, поскольку он имеет дело с структурами данных (массивами, словарями, строками, целыми числами, датами и т. Д.) И не позволит вам создать неверный файл. Если Xcode разрешил вам щелкнуть и выбрать диапазон содержимого, это будет лучший способ сделать это, но это не так. –

6

Предположим, ваш from.plist содержит ключи 1, 2 и to.plist содержит 2, 3

Выполнить это:

/usr/libexec/PlistBuddy -x -c "Merge from.plist" to.plist 

to.plist будет содержать 1, 2, 3