Help us understand the problem. What is going on with this article?


More than 3 years have passed since last update.
  • AppleScriptのレコードには予約語のラベルとユーザ定義のラベルを混在させることができる
    • 予約語のラベル
      • 例:id, name, number
      • クラスやプロパティなど、システムで使われる予約語
    • ユーザ定義のラベル
      • 予約語以外のラベル
      • スクリプトエディタ上では変数と同じフォーマット(色、フォント)
  • AppleScriptのレコードに対応するAppleScriptObjCのクラスはNSDictionary
    • レコードからNSDictionaryへの変換はdictionaryWithDictionary:などを使って簡単にできる
    • NSDictionaryからレコードへの変換もas recordとキャストして得られる
    • これでCocoaの機能を存分に使える!と思いきや…
  • レコードをNSDictionaryに変換すると予約語の属性がすべて消えてしまうことが判明
    • ユーザ定義のラベルだけがNSDictionaryに認識される
    • 変換時にエラーが発生しないので注意
use framework "Foundation"

set aRecord to {id:7, name:"John", age:24}
--予約語のラベル:id, name

set aDictionary to current application's NSDictionary's dictionaryWithDictionary:aRecord

aDictionary as record
--> {age:24}

aDictionary's allKeys() as list

aDictionary's valueForKey:"id"
--> missing value
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away