2011年6月29日水曜日

Cocoa ファイルの非同期コピー(3)

FSCopyObjectAsyncの引数で指定したcallbackに、

FSFileOperationStage stage

というオペレーションの状態を表す変数が渡されてくるので、これがkFSOperationStageCompleteだったらダイアログを閉じるようにすればいい、と本日わかった。

現在のところ、処理すべきファイルのURLをNSArrayに入れて、そこからファイルを一つずつ取り出してコピーする、という段取りで処理している。これだと、1つのファイルを処理するたびにダイアログが現れては消える。

ま、それでも素人のプログラミングだからいいんだろうけど、ここはやはり「複数のファイルが指定されたら、相対のコピーサイズの進捗状況と単体のファイルの進捗状況」を両方表示できるようにしたい。

そんなわけでFileCopyManagerというクラスを作り始める。
ファイルのArrayを受け取って、コピーそのものとダイアログで進行状況を表示する、という働きをする予定。

しかしのっけから.nibファイルを動的に読み込む、というところでつまずいて本日は終了。(^^;)
どーなることやら。

しかし考えてみれば非同期コピーが曲がりなりにも実現できたので、かなりの前進だな。喜ぼう。

追記:
nibの動的な読み込みもやってみればどうということはなかった。NSViewControllerでinitWithNibName;するのを、nib読み込みだけ自前でやる、という感じ。

1,ダイアログのxib内のFile's Ownerを予め動的に読み込む予定のクラスにしておく
2,読み込み元クラスでIBOutletを作って、xib内でつないでおく
3、読み込み元クラスのinitあたりで、[NSBundle loadNibNamed:]でnibを読み込む

読み込んだ時点でIBOutletも有効になるようだ。案ずるより産むが易し。Cocoaはこういうことが多いかも。

0 件のコメント:

コメントを投稿