delegateを配列に入れる
DB上にあるレコードの数だけインスタンスを作って、それを何か別のクラスのデリゲートにしたいという時がある。そういう時、デリゲートを動的に配列に入れたくなると思う。
それをやろうと思って、NSMutableArrayにdelegateを入れようとしたらダメだった。 いろいろネットを検索して、以下のようなやり方があるのを見つけた。
プロトコル | Swift言語を学ぶdelegateをNSMutableArrayに入れようとしたらできなかった。これみたらvar someDelegates:[SomeDelegate] = [] と宣言してそいつにsomeDelegates.append(someDelegate) としてやれば入るっぽい。というかできた。
2015/09/09 11:39
NSMutableArrayではなくて、なんかクラス名を[]で囲むタイプの配列を使えばいいらしい。
自分は以下のように書いた。
// メンバ変数で配列を宣言 var delegates:[SomeDelegate] = [] /* 中略 */ // delegateの宣言 var delegate:SomeDelegate = someObject // 配列にdelegateを追加する delegates.append(delegate) /* 配列に入ったデリゲートに一斉になんか命令を飛ばす */ for i in 0..<delegates.count { delegates[i].someMethod() }
こんな感じでやれば一斉に動いたのでうれしかったです。