iPhoneアプリ開発において、フレームワークの知識およびそれを使いこなすことは非常に重要ですので、重点的に複数回に分けて記載していきます。
まずフレームワーク(Framework)とは、アプリケーションを開発する際に頻繁に使用するクラスやライブラリをまとめたものです。フレームワークは特定のOS向けから、ウェブアプリケーション構築用まで様々なものが存在します。
MacOSのFinder(windowsのエクスプローラのようなもの)を使用して
[Macintosh HD] => [システム]=>[ライブラリ]=>[Frameworks]
の順番に進むと
.framework と付いたフォルダが並んでいます。これらのフォルダはアプリケーション作成に便利なプログラムの集まりで、利用することでアプリケーション開発が容易になります。
iPhoneアプリの開発では「Cocoa Touch フレームワーク」というフレームワークが使用されています。
Cocoa Touchフレームワークは大きく2つに大別することができます。
・Foundation フレームワーク:データ処理を行うためのフレームワーク
・UIKitフレームワーク:GUIを構築するためのフレームワーク
Foundationフレームワークについて
Objective-Cには文字列や配列を扱うクラスがありません。基礎的なクラスはFoundationフレームワークにより提供されます。Foundationフレームワークが扱う範囲は広く、文字列、配列、日付・時間、数値、ファイル管理、ネットワークなど色々とあります。
Foundationフレームワークに含まれる主なクラスとしては NSString(文字列)、NSArray(配列)、NSDiCtionary(辞書)などがあります。どれも「NS」で始まり、これがFoundationフレームワークのものであることをあらわしています。
NSStringについて
NSStringは文字列を扱うクラスです。NSStringクラスは文字列を代入すると、文字列を編集することはできません。そのため編集可能な文字列を作る場合は、NSStringのサブクラスでNSMutableStringクラスを使用します。
文字列の代入
NSString *stringText = @"Hello,World"; <==== @が必要です。
NSMutableString *stringMText = [NSMutableString stringWithString:@"Hello,World"];
NSMutableString *stringMText = [NSMutableString stringWithString:@"Hello,World"];
C言語のprintfと同様に書式指定して文字列を作成する場合にはNSStingのstringWithFormatを使用します。
文字列の標準出力
int a = 1;
int b = 2;
NSString *stringText = [NSString stringWithFormat:@"%02d:%02d",a,b];
↑この場合はstringTextの値は "01:02"となります。
int b = 2;
NSString *stringText = [NSString stringWithFormat:@"%02d:%02d",a,b];
↑この場合はstringTextの値は "01:02"となります。
文字列の連結
文字列と文字列を連結するにはstringByAppendingStringメソッドというものを使用します。
NSString *str1 = @"Hello";
NSString *str2 = @"World";
NSString *str3 = [str1 stringByAppendingString:str2];
//書式指定して連結する場合は
NSString *str4 = [str2 stringByAppendingFormat:@" %d.%d", 1,2]
↑この場合はstr4の値は "World 1.2"となります。
NSString *str2 = @"World";
NSString *str3 = [str1 stringByAppendingString:str2];
//書式指定して連結する場合は
NSString *str4 = [str2 stringByAppendingFormat:@" %d.%d", 1,2]
↑この場合はstr4の値は "World 1.2"となります。
文字列の比較
文字列が等しいかどうかなどの比較する場合には次のようにします。
NSString *strA =@"ABC";
NSString *strB =@"DEF";
NSString *strC =@"ABC";
BOOL result;
result = [strA isEqualToString:strB];
↑この場合はresultにはFALSEが返ります。
result = [strA isEqualToString:strC];
↑この場合はresultにはTRUEが返ります。
//部分一致比較する場合 文字列頭から比較
result = [strA hasPrefix:@"AB"];
↑この場合はresultにはTRUEが返ります。
//部分一致比較する場合 文字列後ろから比較
result = [strA hasSuffix:@"EF"];
↑この場合はresultにはFALSEが返ります。
NSString *strB =@"DEF";
NSString *strC =@"ABC";
BOOL result;
result = [strA isEqualToString:strB];
↑この場合はresultにはFALSEが返ります。
result = [strA isEqualToString:strC];
↑この場合はresultにはTRUEが返ります。
//部分一致比較する場合 文字列頭から比較
result = [strA hasPrefix:@"AB"];
↑この場合はresultにはTRUEが返ります。
//部分一致比較する場合 文字列後ろから比較
result = [strA hasSuffix:@"EF"];
↑この場合はresultにはFALSEが返ります。
文字列操作は、どのようなアプリ開発をする上でも関わってくることが多く、且つ不具合が紛れ込みやすい処理箇所でもあります。そのためNSStingの扱いには早めに慣れておいたほうがいいかと思います。
本日はここまで。
おお、ちょっとずつ進んでますな。
返信削除でも、今回は全く頭に入ってこない…、
NSってなんの略なんだろうか。
なんか一気にムズかしくなったような錯覚が。
返信削除良く読めば理解できるけど、関数名が長かったり記号が多いと
ムズかしく感じてしまう。
*はポインタかな。
そうなんです。
返信削除iPhoneアプリ開発でやっかいというかポイントとなるのは、やはり各フレームワークの使い方なんです。
これがスラスラ頭にはいってこないんでコーディング
するときにソラでなかなかかけません。
それが難しいというよりは自分で作っているっていう感じが
薄くなって作り込みの勢いを削いでしまうような感覚がします。