Как мне работать со списком, возвращенным из результата в AppleScript? - PullRequest
0 голосов
/ 15 апреля 2019

AppleScript новичок здесь. У меня довольно простой вопрос, который я не могу найти ответ в Интернете. Я обещаю, что потратил несколько часов, чтобы найти ответ самостоятельно, но я либо не ищу правильные ключевые слова, либо не читаю нужные ресурсы. Итак, вот оно:

Я успешно написал сценарий, чтобы приложение сообщило пользователю о результатах поиска. Тем не менее, результат возвращается в виде списка, и я не могу понять, как манипулировать им или использовать его. Вот пример того, как выглядит мой результат:

{{"FIRST_NAME", "LAST_NAME", "PHONE_NUM", "USER_EMAIL", "USER_ID", "USER_TITLE"}}

Если я хочу получить только USER_ID, как бы мне этого добиться? Это не может быть так сложно, я уверен, пожалуйста, не шевелите меня за то, что я не понял это самостоятельно. Я прочитал весь раздел «Управление списками элементов» в Apple Scripting Guide , но, как и другие ресурсы, которые я прочитал, все они работают со списком, который определяется пользователем, а не с тем, что возвращается из результат.

Вот что я пробовал:

Return item n of result

или

Return item n of result as string

Я получаю сообщение об ошибке «Не могу получить элемент n», поэтому я попытался присвоить результат переменной в виде списка, например

set theList to result as list
Return item n of theList

Все еще не работает. Затем я попытался преобразовать результат в строку, но затем он выдает мне ВСЕ одну длинную строку, которой трудно манипулировать.

FIRST_NAMELAST_NAMEPHONE_NUMUSER_EMAILUSER_IDUSER_TITLE

Я даже попробовал обработчик из Apple Scripting Guide и смог получить результат в виде строки с пробелом между ними. Опять же, я не могу этим манипулировать.

Можно ли выбрать один элемент из списка результатов? Я чувствую, что подхожу к этому совершенно неправильно. Огромное спасибо SOOOO за ваш вклад и образование.

Также спасибо за то, что терпели мой очень начинающий запрос.

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

На самом деле ваш список является вложенным, обратите внимание на количество фигурных скобок {{ ... }}

Внешний список содержит один элемент, который является внутренним списком.

Этот код отображает каждое поле в диалоговом окне

set theList to {{"FIRST_NAME", "LAST_NAME", "PHONE_NUM", "USER_EMAIL", "USER_ID", "USER_TITLE"}}
set fields to item 1 of theList -- gets the inner list
repeat with aField in fields
   display dialog aField buttons {"OK"} default button 1
end repeat

или получить предмет по определенному индексу

set userID to item 5 of fields

Не приводите строку к строке и список к списку, оба принуждения избыточны.

1 голос
/ 15 апреля 2019

У вас есть список списков, поэтому (при условии, что внутренний список всегда имеет одинаковую структуру):

set aList to {{"FIRST_NAME", "LAST_NAME", "PHONE_NUM", "USER_EMAIL", "USER_ID", "USER_TITLE"}}

item 5 of item 1 of aList

--> "USER_ID"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...