Почему я не могу получить «содержимое» элемента заметки в Yojimbo, но я могу получить «содержимое»? - PullRequest
0 голосов
/ 03 февраля 2010

Элемент заметки в словаре Applescript Yojimbo определяется как:

note item n [inh. database item] : A note item.
elements
  contained by application.
properties
  encrypted (boolean, r/o) : Is the note is encrypted?
  contents (text) : The contents of the note.  syn content

    If this note is encrypted, the contents property is only readable 
        if permitted by the current security policies.

responds to
  append, prepend.

В попытке экспортировать мои данные, я возился с AppleScript, изучал язык и т. Д., И в настоящее время имею:

tell application "Yojimbo"
    repeat with EachNote in (note items in library)
        display dialog (content of EachNote) as string
    end repeat
end tell

Что меня смущает, так это то, что хотя класс определяет свойство «содержимое», я должен использовать «содержимое» для извлечения содержимого.Использование «content» приводит к этой ошибке:

Can’t make «class YNot» id "A0C9E19E-3106-44F9-97A6-A1A74AD77948" 
  of application "Yojimbo" into type string.

Я предполагаю, что «syn content» означает, что это синоним, поэтому я должен иметь возможность использовать «content» и «content» взаимозаменяемо.Но, очевидно, синоним работает, а оригинал - нет ...?

Кроме того, проще, почему содержимое должно быть приведено в строку?Если я посмотрю на свойства объекта (через: (properties of EachNote) as string), то «содержимое» - это строка в двойных кавычках, хотя я понимаю, что это не обязательно «доказательство» того, что это строка.

IЯ все еще начинаю с AppleScript, поэтому, если я делаю ошибку, не стесняйтесь шлепать.

1 Ответ

0 голосов
/ 23 февраля 2010

Для тех, кто находит подобное замешательство, я нашел помощь здесь: http://groups.google.com/group/yojimbo-talk/browse_thread/thread/d04f42db335c77e7

Так что все реквизиты идут Джиму за то, что он потрясающий!

Основы:

  • contents объекта отличается от contents переменной, содержащей объект.
  • contents переменной, содержащей объект, возвращает объект, а не его содержимое, в отличие от любого другого свойства . Другие свойства возвращают свойство объекта в переменной, как и ожидалось.
  • Это означает, что для получения содержимого объекта внутри переменной необходимо использовать contents of contents of variable.
  • Как показано здесь, в моем блоге, да, это очень странно. Хотя var == var и var == contents of var, var != contents of (contents of var), поэтому Applescript действительно нарушает принцип идентификации «содержимого» в данном конкретном случае. Однако этот эффект не связывает этот эффект, поэтому вам не нужно использовать contents of три слоя глубиной (он будет работать так же, как два)
  • contents of contents of var также работает с объектами, поэтому его всегда безопасно использовать.
  • Многие словари используют content как синоним contents, что позволяет избежать всей этой проблемы. При желании используйте content of var, и он будет работать как другие свойства, всегда возвращая объект content вместо объекта.
...