何回やっても覚えられないならメモしておくしかないじゃない!

あなたも・・・私も・・・


よく使う、しかもよく忘れる、
すごく単純な命令をここにメモしていくことにしました。

Foundation関連

・大文字小文字を区別せずに文字列比較を行う

// 大文字小文字区別なしで、同じ文字列かどうかを調べる
BOOL equals = NSOrderedSame == [@str1 caseInsensitiveCompare:str2];

・文字列のtrimming

// 前後の空白文字を除去(全角空白も除去!)
s = [s stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

// 空白と改行も除去したい場合
s = [s stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

・NSData→NSString変換
HTTP通信のレスポンスボディがNSData型で取れるので、よく文字列に変換することがある。

NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString* content = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];

・NSTimeIntervalは秒を表すdouble型である
double型なので、通常の四則演算で計算可能だし、比較も可能。

// startTimeからの経過時間を計測する
NSTimeInterval passed = [[NSDate date] timeIntervalSinceDate:startTime];

// 1秒以上経過しているかどうかを調べる
if (1.0 <= passed) {
    // ...
}

・NSArrayを変更可能配列に変換する
copyは常に変更不可の参照を返し、mutableCopyは常に変更可能な参照を返す。

NSMutableArray* marry = [array mutableCopy];

・配列の要素を範囲指定削除

// 配列の末尾len個の要素を削除
[array removeObjectsInRange:NSMakeRange(array.count - len, len)];

UI関連

・UIImageをコピーする
いわゆるディープコピーというやつ。

UIImage copy = [[[UIImage alloc] initWithCGImage:otherImage.CGImage] autorelease];

・Segueから次画面のViewControllerを取得する
destinationViewControllerというプロパティ名をよく忘れて、「あれなんだっけ・・・」ってなっちゃうのでメモ。

-(void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"segueName"]) {
        NSLog(@"%@", segue.destinationViewController);
    }
}