Xcode IBOutletCollections について

こんにちは、今更ながらIBOutletCollectionsについてです。

まずどういったことができるのかというとIB上でで配置したオブジェクトを配列として管理が行えます。

上記ができると複数のButtonやViewを使う時にまとめて関連付けを行えるのでとても便利です。また collection名.forEach{}なども使えるので初期設定を行いたいときなども使いやすいです。

管理するオブジェクト数が決まっていないときなどは、使いづらいですが、ストーリーボードで同じオブジェクトを複数管理しないといけない時は是非とも使ってみてください。

Collection内のオブジェクトの順番が間違えっていると思わぬバグになりますので、そこだけは注意しましょう!私は失敗したことがございます!

 

 

 

Swiftのmap、filter、forEachでワンランクアップ!

お久しぶりです。カイザーです。

さてみなさん、Swiftしてますか?
いいですよね、Swift。

今日は、Swiftのmap、filter、forEachについて紹介します。

まず概要についてはこちらです。
http://qiita.com/motokiee/items/cf83b22cb34921580a52#enumerate要素と要素のインデックスが欲しい時に使う

つまるところ、これまでforinなどの高速列挙を使って、配列の要素に対して、統一した処理を行ったり、条件分岐して絞り込みを行ったり、、、みたいなことが簡単にできます。

ここでサンプルです。


self.stamps = resultStamps.filter({ (element) -> Bool in
element.category == .normal
})

あるコントローラは「stamps」という配列を持っていて、それは「category」というプロパティを持っています。
その「category」がnormalのスタンプのみを絞り込んでいます。

先ほどの記事の例では数字に関するものが多かったですが、このように、モデルクラスに対しても便利に使うことができます。

そのほかにも、filterはこんな風にも使えます。


self.stamps.filter({ stamp -> Bool in
stamp.count > 0
})

先ほどのスタンプで、所持しているものがフィルターされます。

このような感じで、Swiftでは少し気をつけると、かなり簡潔にプログラミングできます、

配列が関連するループでは、forinさえもあまり使わなくても良さそうですね。
ちなみに、Java 8でも同じような機能があります。Android開発でJava 8を使う際も積極的に使っていきたいところですね。

これを使って格好よくプログラミングしちゃいましよう!