为什么我不能在Yojimbo中检索笔记项目的“内容”,但我可以检索“内容”?

时间:2010-02-03 00:04:15

标签: syntax dictionary applescript

Yojimbo的Applescript字典中的注释项定义为:

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

让我感到困惑的是,尽管该类定义了属性“contents”,但我必须使用“content”来检索内容。使用“内容”会导致此错误:

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

我假设“syn内容”意味着它是一个同义词,因此我应该能够互换地使用“内容”和“内容”。但显然这个同义词有效,但原来没有......?

另外,更简单的说,为什么必须将内容强制转换为字符串?如果我查看对象上的属性(通过:(properties of EachNote) as string),“contents”是一个双引号字符串,但我意识到这不一定是“证明”它是一个字符串。

我仍然使用AppleScript,所以如果我犯了一个错误的错误,请随意拍打。

1 个答案:

答案 0 :(得分:0)

对于发现类似混淆的其他人,我在此处找到了帮助:http://groups.google.com/group/yojimbo-talk/browse_thread/thread/d04f42db335c77e7

因此所有道具都归于吉姆,因为它太棒了!

基础知识:

    对象的
  • contents与包含对象的变量的contents不同。
  • 包含对象的变量的
  • contents返回对象,而不是对象的内容,与其他所有属性不同。其他属性按预期返回变量中对象的属性。
  • 这意味着,要在变量中获取对象的内容,您需要使用contents of contents of variable
  • 正如here, on my blog,所示,这是非常奇怪的。虽然var == varvar == contents of varvar != contents of (contents of var),但在这种特定情况下,Applescript 确实违反了“内容”的身份原则。但是,它并没有链接这种效果,所以你不需要使用contents of三层深层(它的工作方式与两层相同)
  • contents of contents of var也适用于对象,因此使用它总是安全的。
  • 许多字典使用content作为contents的同义词,这可以避免这个问题。如果需要,使用content of var,它将像其他属性一样工作,始终返回对象的content而不是对象。