2016-04-19 12 views
0

だから、私はOOプログラミングの新人です。 WebDesignの背景から来て、私のプロジェクトで必要とされていた場所であれば、主に設計作業や多かれ少なかれ中間的なスクリプト作成を行ってきました。しかし、勉強に熱心で、あなたのようなことをするために "正しい"道を探しています。 Kiddie Mindが私に教えてくれるスクリプトではない:D。それは本当に超初心者の質問ですが、申し訳ありませんが、私はむしろ最初から "正しい"概念を把握したいと思います。NSMenuItemsをフォルダのURLとともに保存/関連付ける

私は、プログラムで、NSMenuItemsをNSMenuItemsで作成しています。これは、自分のドキュメントディレクトリにあるフォルダの内容に基づいています。私はそれらの名前

let menuItem = statusMenu.insertItemWithTitle(folder!, action: #selector(StatusMenuController.doFancyStuff), keyEquivalent: "", atIndex:0)" 

これまでのところに基づいてNSMenuItemsを

let folder = el.URLByDeletingPathExtension?.lastPathComponent 

を使用して作成することにより、フォルダ名を抽出し、一つ一つのURLを取得し、この仲間のサブフォルダを反復処理しています良い。では、アクションがトリガーされたときに操作するような、後で使用するために、関連付けられたURLをMenuItemとともに保存する方法はありますか?

アイテムをクリックすると、実行するアクションが必要ですが、これには完全なフォルダURLが必要です。私の最初のアイデアは、 "path"という新しい変数でNSMenuItemを拡張することでした。しかし、エクステンションに格納された値が格納されていないので、これはデッドエンドです。

あなたはどのようにして本当のプログラマがこのようなケースを処理しますか?ディクショナリを使用してアイテムをそれぞれのURLと共に保存するか?働くことができますか?しかし、それは正しい方法でしょうか?または、MenuItemsタイトルを取得し、それをベースフォルダーのURLに「再接続」することで、完全なURLを取得できますか?どちらもうまくいく可能性があります。または、属性として呼び出されるメソッド/アクションにURLを渡しますか?私は本当に面倒なコードから離れていたいと思う:)あなたのプロの洞察力は非常に高く評価されます。

ありがとうございました! andy

答えて

0

NSMenuItemは、その目的のために使用できるプロパティrepresentedObjectを持っています。ドキュメントから

メニュー項目の表現オブジェクトを設定することにより、あなたは、メニュー項目とそのオブジェクト間の 関連付けを行います。表現された オブジェクトは、 に任意の整数だけでなく任意のオブジェクトを のメニューに関連付けることを可能にする、より具体的なタグとして機能します。

あなたはまたrepresentedObjectArrayまたはDictionaryなどのコレクションオブジェクト、あるいはカスタムクラスを割り当てることができ、単にURLより多くの情報を保存する場合。

+0

恐ろしい!どうもありがとうございました。今私は気が気になりません:-)私は既にリンゴの文書をかなり広範に使用していましたが、何らかの形で、まったく期待していなかった、すでにそのような特性があると思います。だから私はそれを探すことさえしなかった。 – user57213

関連する問題