hachinoBlog

hachinobuのエンジニアライフ

CoreDataのNSPredicateでlike句を使用した時のエスケープシーケンス(追記あり)

CoreDataのNSPredicateで条件を絞り込む時にlike句を使う場合 ? → 任意の一文字 アスタリスク(*) → 0文字以上の文字列として認識されるので、*と?を検索に使いたい場合はエスケープしてあげる必要がある。2012/08/01追記 エスケープ対象の文字は分かったが\*…

UITableViewのセルの値がスクロールするごとに重なったり壊れる現象

UItableViewCellにUITextFieldをaddSubviewしてテキストフィールドを載せたセルを 1セクションに1セルの形式で9つ作成した。 動作確認したところ、スクロールすると他のセクションのセルが重なったりして滅茶苦茶になっていた。 原因としてはテーブルビュ…

GData(Google Data)をxcode4.3で使う

svn checkout http://gdata-objectivec-client.googlecode.com/svn/trunk/ gdata-objectivec-client-read-only 上記コマンドでプロジェクトを落とす 途中で (R)eject, accept (t)emporarily or accept (p)ermanently? と聞かれるので p でEnter(これしないと…

retinaディスプレイかどうかの判定

[[UIScreen mainScreen] scale]で取得した値が2.0の場合はretinaディスプレイ搭載機種。 iPadかiPhoneかの判別を先にしてあげてから if([[UIScreen mainScreen] scale] == 2.0f) { //Retina } else { //Not Retina }でretinaかどうか判定するのがよろし

URLエンコード

APIにデータを投げるときはURLエンコードするのは基本! NSString *str = (NSString *)CFURLCreateStringByAddingPercentEscapes( NULL, (CFStringRef)エンコード対象を含む文字, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8 );参考U…

Instruments Target failed to run: Remote exception encounteredエラー

Instrumentsでメモリリークの確認をしようとしたところ Target failed to run: Remote exception encounteredとなって起動しなかった。 Edit Schemeの Run [App名]のBuild Configuration と Profile [App名]のBuild Configuration を Debugに設定し重複名前…

Twitter APIの制限

Twitterからあるアカウントのタイムラインを取得して表示するアプリをいじっている時に Response Code 400 が返って来た。。 URLもおかしくないのに変だと思って調査したらTwitter APIの制限とのことorz 1時間に150アクセス以上するとBad Request(400)が返…

NSDictionary形式で取得した2テーブルの同じカラムの値をソートしてマージする方法

//テーブルAとBにpriceカラムとnameカラムがあり、それぞれから2カラムをNSDictionaryで抽出したとする NSArray *tableA = [self loadA]; //テーブルAから取得 NSArray *tableB = [self loadB]; //テーブルBから取得 //マージ NSMutableSet *set = [[NSMutab…

NSFetchedResultsControllerのsectionNameKeyPathで指定したカラム以外をセクションタイトルにする方法

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { //nameカラムをセクションタイトルとして使用したい場合 NSString *name = [[[[[_fetchedResultsController sections] objectAtIndex:section] objects] va…

NSFetchedResultsControllerから全ての値を取り出すとき

[_fetchedResultsController fetchedObjects] //fetchedObjectsプロパティで全て取得できる //あるカラムだけ取り出したいなら for (int i = 0; i < [[_fetchedResultsController fetchedObjects] count]; i++) { NSString *a = [[[_fetchedResultsControlle…

カスタムUITableViewCellの再利用

自分で定義したカスタムセルのxibファイルを読み込む場合、xibファイルのIdentifierに 実際のコードで使用するCellIdentifierと同じ名前の値を入れてあげないと再利用されない。例: static NSString *CellIdentifier = @"CustomCell"; UITableViewCell *cel…

UIToolbarTextButtonについて

UIToolbarにUIBarButtonItemを載せて,[UIToolbar subviews]で該当のクラスを引っ張りだしたら UIBarButtonItemじゃなくUIToolbarTextButtonクラスとして抽出された。 UIToolbarTextButtonはググったけどよく分からず。。 普通にUIToolbarTextButtonを使おう…

デバッガの変更

xcode4.3はデバッガが今までのGDBじゃなくLLDBがデフォルトで選択されている。 このままNsLogでコンソールに出力すると文字化けが発生。 なので、xcode左上のSchemeのプロジェクト名の箇所をクリックして[Edit Scheme]-[Run App名]を選択して [Info]タブのDe…

Coredataの読み込み先とかまとめ

CoreDataはモデルファイルと読み込み先のファイルを指定してあげることで 複数のDBもしくは複数のデータファイルから読み込みを行うことができる。 NSPersistentStoreCoordinatorでどのモデルファイル、どのファイルから読み込むのか指定している。exception…

処理を一定時間止める

[[NSRunLoop currentRunLoop]runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.5f]];これでOK

case文の中で変数宣言対処法

case文の中で新たに変数を宣言してもエラーになってしまうが{}で囲ってやればエラーにならない。 switch(a) { case :a NSString a = 〜; //これはエラーになる break; case:b { NSString b = 〜; //これならエラーにならない } break; }

画面表示時に指定したセルの位置を初期表示させる

該当のセルまでスクロールさせる方法。 NSIndexPath *indexpath = [NSIndexPath indexPathForRow:5 inSection:0]; //該当のセクションと行指定 [aTableView scrollToRowAtIndexPath:indexpath atScrollPosition:UITableViewScrollPositionTop animated:NO];a…

UIBarButtonItemの色を変える方法

UIBarButtonItemは本来、ボタンの色変更が出来ない。 だけど、UIToolbarに突っ込んだ後にUIViewのサブクラスとなった該当のボタンなら色を変えられる。 // Toolbar生成 UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 460-44, 320, 4…

UIWebViewで表示しているHTMLからjsファイルの読み込み時注意点

UIWebViewのloadHTMLStringで読み込んだ時にbaseURLでリソースのパスを指定してやるのは当たり前なのだが jsファイルの場合はそれだけでは、指定したリソースに存在しないと認識されてしまう。 原因としてはXcodeでjsファイルをコンパイル対象のファイルとし…

iPhoneのMacアドレスを取得する

色々悩んだけど下記のファイルを使用したら簡単に取れた。。ライセンスはMITライセンスです。 https://gist.github.com/662203NetworkInformation.hをインポートしてprimaryMACAddressメソッドを呼ぶだけ。

選択したUITableViewCellの値を動的に変えたい場合

//選択したCell値の変更 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; //後続処理 }これで選択されたCellの情報を取得できるの…

簡単な事だけど注意

setDelegateでセットしたらdeallocでsetDelegate:nilを入れてあげる事。 当たり前のことだけど、それをしていなくてTextFieldで毎回こけてて悩みまくった。。

iOS4.2.1のバグ

UIAlertViewでパスワード認証をしていたところ、正確なパス入力後にアプリが落ちた。 この事象はiOS4.2.1のみ。 原因としてはアプリ起動時にUITextViewのキーボードが日本語になっているかつsecureTextEntryがYESになっている場合に発生。 これもハマった。…

UITableViewControllerの画面へ遷移する場合

UITableViewControllerの場合はUIViewControllerとは違い UITableViewController *vc = [[UITableViewController alloc] initWithStyle:UITableViewStyle〜];で作成してNavigationとかで遷移させる。 nibを読み込ませようとしてずっとこけてた。。簡単な事で…

UIAlertViewの非同期処理を遅らせる方法

ドハマりしたからメモ〜。 パスワード認証とかで認証がOKだったら次の画面に遷移とかを実装してたんだけど UIAlertViewのデリゲートは非同期処理だからデリゲート処理が終わる前に次の処理に流れてしまっていたので苦労した。。 デリゲートの処理(ボタンを押…

iPhoneアプリ申請の審査基準

こんな感じになってるみたい。 http://fladdict.net/blog/2010/09/reject-list.html

継承した時のコーディング

viewdidloadに色々な処理を書くもんじゃないなと。。 継承したクラスからオーバーライドしようにもviewdidloadに色々書かれてたんじゃ 意味がない。。 今更ながら気づきましたorz

GroupedスタイルのTableViewのbackgroundColorについて

とてつもなくハマった。。 GroupedスタイルのTableViewの下にUIImageViewで背景画像を設定したので 当然、TableViewのbackgroundColorをclearcolorにしてやればiPhoneはOKなんだけど iPadは何度やってもグレーになってしまう。。解決法: 犯人はUITableView…

UITableView Groupedで角が黒くなってしまった場合

xibファイルでTableViewのStyleをGroupedに指定して背景画像の上に載せるのでBackgroundをClearColorにしたが 表示を見るとグルービングされたセルの角が黒く直角になってしまった。対処法としてはxibファイルからでなく、プログラムでBackGroundをClearColo…

warning: Unable to read symbols for 〜 (file not found). による警告

実機にアプリをインストールして動かすとコンソールに warning: Unable to read symbols for /Users/[username]/Library/Developer/Xcode/iOS DeviceSupport/5.0.1 (9A405)/Symbols/System/Library/Extensions/IMGSGX535GLDriver.bundle/IMGSGX535GLDriver (…