2016-04-20 1 views
0

Мне интересно, как извлечь значение элемента из массивов, найденных в файле .plist в iOS, используя plutil. Обычно с plists я могу сделать извлечь ключ только какКак извлечь значение элемента из массивов в plists с использованием plutil

plutil -key CFBundleName Info.plist

Однако в тех случаях, когда есть массив, как эта структура:

<key>UIDeviceFamily 
    <array> 
    <integer>1</integer> 
    <integer>2</integer> 
    </array> 
</key> 

Я попытался схватить 1-й элемент с plutil -key UIDeviceFamily -Array или даже plutil -key UIDeviceFamily -Array[0], но не удачи. Все, что я получаю весь массив все время, что-то вроде:

Array 
(
    1, 
    2 
) 

Может кто-нибудь помочь мне с этим вопросом, что я столкнулся? Я использую plutil для этого с iPad.

+0

Вы используете его в сценарий оболочки? (Фазы проекта/построения) –

+0

Да @AlekseyPotapov, я использую его в сценарии оболочки, в частности, Bash. – warfreak92

+0

У вас нет опечатки с закрывающим тегом? –

ответ

0

Apple official documentation говорит:

Не вставляйте этот ключ вручную в ваши Info.plist файлов. Xcode вставляет его автоматически в зависимости от значения в целевом устройстве. Настройка семейной сборки. Вы должны использовать эту настройку сборки, чтобы изменить значение ключа .

Но вот скрипт для чтения файла Info.plist с использованием команды оболочки defaults. Скажем, у вас есть info.plist в таком пути, как: /Desktop/YourProject/YourProject/Info.plist

PLIST_FILE="Info" 
PLIST_KEY="UIDeviceFamily" 
PLIST_PATH="${PROJECT_DIR}/YourProject" 
DICT_B=$(defaults read ${PLIST_PATH}/${PLIST_FILE} ${PLIST_KEY}) 
for el in $DICT_B 
do 
printf 'element %s\n' "$el" 
done 

И выход будет выглядеть следующим образом:

element: (
element: 1, 
element: 2 
element:) 
+0

Привет @Aleksey Потапов, раньше у меня были «по умолчанию». Но, к сожалению, мне нужно запустить мой скрипт Bash на iPad. Это для исследовательских целей, поэтому мне нужно извлечь значения из файла .plist, запускающего скрипт на iPad, а не на MacBook. Вы пробовали это? Я имею в виду, запуская 'defaults' в iDevices? Я уверен, что 'defaults' - это только команда Mac. – warfreak92

+0

Обычно, когда вы запускаете сценарий оболочки в фазах сборки xcode - это может быть написано на любом языке, swift, shell, python. И да, это будет выполнено на устройствах iOS. –