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()
  }

こんな感じでやれば一斉に動いたのでうれしかったです。