You are here: Home / TinBlog / NSArrayでお手軽に数値配列 その2

NSArrayでお手軽に数値配列 その2

Posted by h2 at Jan 25, 2016 10:54 PM |
Filed under:
Objective-C でお手軽に数値配列を書くネタをやったのは、かなり前のこと。その後、いろいろ環境が変わってきたこともあり。というわけで、さらにお手軽な方法を探求してみよう。

Objective-C で全うに配列を扱いたい場合、第一の候補として上がるのは、.plist を使用した外部ファイルの値を NSArray に読み込む方法だ。この方法については、前回やっているのでそちらの記事を参考にしてくださいまし。

 

同じく、プログラムソースコード内で配列をハードコーディングしてしまう方法についても触れてます。前回記事を書いた当時は、この@を使用したやり方についての日本語記事がほとんどなかったんだけど(だからわざわざ記事にしたという)、先日久しぶりに気になってググってみたら、この手法が各所で紹介されるようになってた。

やっぱり皆さんお手軽がいいよね。

 

で、本題。

アップルからSwiftなる言語が発表されたあたりからだと思うけど、配列の書き方でさらにお手軽な方法が使われ出したので、ご紹介。

書き方のスタイルからして、たぶん Swift からの技術的フィードバックの賜だとは思うけど。

	NSArray *array = @[ @1, @2, @3, @4, @5 ];

・・・これだけだったりする。

 

いやその。我ながらここまでサボっていいのかなと思うけど。

もはや [NSArray alloc] だの arrayWith... すら書く必要なくなってしまいました。

 

そしてそして。そう、勘のいい人ならお気づきでしょう。

なんと、辞書も同様に書けてしまうんですね。

	NSDictionary *dic = @{ @"key1":@1, @"key2":@2, @"key3":@3 };

・・・みたいな。

[{の使い分けに注意。

 

なんというか、従来の低レベル言語にスクリプト言語が浸食を始めたというか。

いや、簡単になるのは歓迎なんだけどね。

 

ちなみにこの書き方、数値(即値)の部分は変数でも大丈夫なので、応用範囲が広いのですよ。

たとえば、UITableViewDelegate などのコールバック内で処理する「複数のindexPathを受け付ける」ような場所とか。

今までは、わざわざ NSArray でワンクッション入れる必要があった場所など、この書き方を利用すると、

- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath
{
	[tableView deleteRowsAtIndexPaths:@[indexPath]
			 withRowAnimation:UITableViewRowAnimationAutomatic];
	...

みたいな感じでシンプルになりマス。

ほかにも、ツールバーに複数のボタンを配置するような場合とか、意外と応用範囲が広いんですね。

 

是非お試しあれ。

Filed under:
« December 2019 »
December
SuMoTuWeThFrSa
1234567
891011121314
15161718192021
22232425262728
293031