2010年10月25日月曜日

NSMutableStringの文字列を入れ替える

NSMutableStringの文字列を入れ替えるには、「setString」メソッドを使用します。



    NSMutableString* str = [[NSMutableString alloc] initWithString:@"AAA"];
    [str setString:@"BBB"];


上記例では、"AAA"で初期化したNSMutableStringの文字列を"BBB"に入れ替えています。

2010年10月24日日曜日

iPadかどうかの判定

デバイスがiPadかどうかを判定するには、「UI_USER_INTERFACE_IDIOM()」関数を使用します。



-(BOOL)isIpad
{
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){
        return TRUE;
    }else {
        return FALSE;
    }
}


使い方はまぁ、見たままです。

iPhone / iPodのバージョン判定

iPhoneのバージョン判定を行うには、uname 関数を使います。

使い方はLinuxで使われるシステムコールと同じです。
utsname型の構造体にバージョンの文字列が返るので、それを判定します。




-(BOOL)deviceIsiPhone4OrLater
{
    struct utsname u;
    uname(&u);
    NSString* machine = [NSString stringWithCString:(const char*)u.machine encoding:NSUTF8StringEncoding];
    if ([machine isEqualToString:@"iPhone 1,1"] == YES) {
        // iPhone 1G
        return NO;
    } else if ([machine isEqualToString:@"iPhone1,2"] == YES) {
        // iPhone 3G
        return NO;
    } else if ([machine isEqualToString:@"iPhone2,1"] == YES) {
        // iPhone 3GS
        return NO;
    } else if ([machine isEqualToString:@"iPod1,1"] == YES) {
        // iPod touch 1G
        return NO;
    } else if ([machine isEqualToString:@"iPod2,1"] == YES) {
        // iPod touch 2G
        return NO;
    } else if ([machine isEqualToString:@"iPod3,1"] == YES) {
        // iPod touch Late 2009
        return NO;
    }
  
    return YES;
}

上記の「machine」にiPhoneのバージョンを示す文字列が返ってきます。
私はiPhone 4を持っていないので何という文字列が返るのか確認できませんが、これまでの流れから言うと多分「iPhone 3,1」?とかが返ってくると思います。
(誰か持ってる方いらっしゃいましたら返却文字列を教えてもらえると嬉しいです。)


2010年10月18日月曜日

文字列の置換

文字列を置換するには、NSMutableStringクラスのreplaceOccurrencesOfStringメソッドを使用します。

replaceOccurrencesOfString:変換前文字列 withString:変換後文字列 options:検索オプション range:変換対象となる文字列の範囲

--------------------

            [tmpString replaceOccurrencesOfString:@"AAA"
                                       withString:@"BBB"
                                          options:NSLiteralSearch
                                            range:NSMakeRange(0, [tmpString length])];

--------------------
上記例では、tmpString文字列中の"AAA"が"BBB"に置き換えられます。

2010年10月17日日曜日

ファイルのフルパス取得

アプリが置かれているディレクトリの文字列を取得するには、NSHomeDirectory()関数を使用します。
これにファイル名の文字列を追加すれば特定ファイルのフルパスが取得できます。

------------------

NSString* path = [NSHomeDirectory() stringByAppendingPathComponent:@"aaa.txt"];

------------------

ファイル名を追加する時は、NSMutableStringクラスのインスタンスメソッドである「stringByAppendingPathComponent」を使います。これを使うと追加する文字列の先頭にスラッシュが入ります。
普通の文字列追加メソッド「appendString」ではスラッシュは入らないので少し注意です。

起動時スプラッシュウィンドウ

iPhoneアプリで起動時に表示されるスプラッシュウィンドウを表示するのは非常に簡単です。
実はソースコードをいじる必要もありません。
プロジェクトにDefault.pngという画像を置くだけです。
たったこれだけでビルド&起動するとスプラッシュウィンドウが表示されるようになります。
iOSってこういう痒いところに手が届いてるのが評価されてるんでしょうね。