Swift:リカーシブルに動かしてみました。

フォルダの中に写真ファイルがあるかどうか調べるために、自分のメソッドを自分で呼び出して処理してみました。

すごく苦労していろいろ考えながらプログラムを書いては消す作業を繰り返していました。いわゆるリトライ、リトライ、リトライ。

このやり直しで、結局、500行くらい無駄に書いた末に、50行少々でやりたいことができました。やりたかったことは、フォルダの中から写真があるフォルダだけをツリー構造で表示し、クリックされたらその中にある写真のフォルダをサムネールに展開する機能です。

答えは、filepathの構造を解析してそれぞれの階層を親フォルダ番号(インデックス)にしてNSMutableArrayを活用するでした。

フォルダの中のフォルダの検索は、リカーシブルにすれば良さそうだったので、試しにそうしたらちゃんと動いているようで、ずっと深い階層に置いた写真のフォルダを探し当てることができました。あとで、本当にちゃんと動いているか、メモリリークにつながることはないか調べないといけません。

Swiftで再帰呼び出しがこんなに簡単にできるのなら、もっとほかのことに応用ができそうです。

基本機能が実現できたので、悶々としたフォルダの階層管理からようやく解放されそうです。

他方、Tree構造のサンプルプログラムはSwiftで動いているのですが、.xibからstoryboardに移行できていません。.xibがOKでstoryboardがダメな理由は、View Controllerと関連しているようですが対処方法がわかりません。もう一点わからないのは、アイコン表示ができていないことです。この2点が問題でソースコードのアップを保留しています。

Advertisements