iOS7がリリースされましたね。 きっとNDAも解除されたろうと思いiOS7関連情報を綴ります。iOS7になったことで全体のデザインがフラットデザインになりました。 この影響で僕のアプリはステータスバーの20px領域にViewが食い込むようになってました。 ステー…
テストケースを書く際にOCMockのスタブを使用してメソッドの返り値を制御することが多々あると思います。 メソッドだけじゃなくて、そのクラスで定義されているプロパティの返り値を制御するのに四苦八苦したのでメモります。 メソッドのスタブと同じように…
配列データに該当の値が存在するか調べる際に配列データをループして調べるが、 今までは for (int i = 0; i for (id obj in array) //高速列挙 を使用していた。NSArrayにはenumerateObjectsUsingBlockメソッドがあり便利なので記述する。 @interface ViewC…
Appleのサンプルコードで発見したNSDictionaryと自作オブジェクトの相互変換メソッド。 NSDictionaryのデータを自作オブジェクトに変換してくれるのがsetValuesForKeysWithDictionary 自作オブジェクトのデータをNSDictionaryにしてくれるのがdictionaryWith…
テーブルビューで一番下のセルまでスクロールしたら自動で次の○件を取得する処理について調べた。 この処理で一番のポイントはどのタイミングで次の○件を取得して表示を更新すべきかというところ。 まず最初に試した方法はUITableViewDelegateのwillDisplayC…
アプリでfacebookアカウントを使用してWebサービスログイン機能実装していた際に一度facebookアカウントでログインしてからログアウト。 その後に再度facebookログインを試みるとIDとPWを求められることなく先ほどまでログインしていたアカウントで勝手にロ…
ある処理をする際に他画面に遷移されたりボタン操作をされたくなかったので新たにViewを作成して対象画面にaddSubViewして覆っていたのだがnavigationBarの領域にあるボタンは押せてしまっていた。navigationBar領域を覆えないコード CGRect frame = self.vi…
CentOS6.4にGitサーバを構築したのでメモ[サーバ側] # yum install git git-deamon git-all xinetd # chkconfig xinetd on # /etc/init.d/xinetd start xinetd を起動中: [ OK ] 必要なものをインストールして起動設定が終わったらgit-daemonファイルを/etc/…
CoreDataを使用していて、あるカラムの重複を除いたデータの件数を取得する際に setReturnsDistinctResults:YESの設定をして managedObjectContextのcountForFetchRequestメソッドで取得したが重複を除いた件数ではなく重複を含む件数を取得してしまった。 …
表示するコンテンツの有無に応じて高さが変わるカスタムセルを表示する際にえらく時間が掛かってしまっていたのを改善したメモ。 (カスタムセルはUILabelを縦に4個配置しているもので上から順に詰めていく。UILabelの高さはすべて25.0fで固定) 時間がかかっ…
あるサイトのAPIのレスポンスデータ(JSON)にNullが含まれていて、そのデータをCoreDataに挿入する際にNull判定の仕方を間違えていてエラーが発生した。 nilとNullの違いをきちんと分かっていなかったのが原因。 エラーが起きたのはNull判定を下記のようにや…
EventKitを使って端末カレンダー連携をする際にiOS6系からはプライバシー設定が導入されたので、 アプリから端末カレンダーを操作する許可がない状態でEKEventStoreにアクセスするとクラッシュする。 対応方法としては 1. 端末のiOSが6系以降かどうか調べる …
Rubyでバッチ処理を書いているのだがDBへの接続で苦戦した。 RailsのActiveRecordのように簡単に出来るものだと思っていたのだがそうもいかず.. しかしrails runnerを使えばRails同様のアクセス方法でいけるという事を知りました。 まずは準備としてconfig/a…
アプリ内の情報を端末カレンダーに送信するメモ 1. EventKit.frameworkを入れる 2. EKEventStoreのインスタンス生成 (初期化して解放まで重いのでシングルトンとかにして使い回す設計にする) 3. EKEventのインスタンスを生成してタイトルなど送信したい情報…
CoreDataのモデルファイルにカラムを追加して再度ビルドしたところ下記エラーが出た。 error:{ metadata = { NSPersistenceFrameworkVersion = 419; NSStoreModelVersionHashes = { EntityA = <3159d1ee 37851832 a788a9a2 fae591d2 4d0f7a24 73d33faf 2384d…
GHUnitを使ってテストをすることにした。 ここの通りにやれば導入は簡単にできた。 http://www.crossbridge.biz/ghunit-iosひとつ注意としてはGHUnitテスト用の[TARGETS]-[Build Settings]-[Build Options]-[Compiler for C/C++ /Objective-C]がLLVM GCC4.2…
カスタムセルを使う方法で色々ハマってしまったのでメモ。 xibファイルを使わずにUITabaleViewCellを継承したクラスを作成した場合は UITableViewDataSourceのcellForRowAtIndexPathで下記のように記述 - (UITableViewCell *)tableView:(UITableView *)table…
ネットワーク処理でNSURLConnectionを使っているとiOS5系でのみ設定したタイムアウト時間よりも遥かに長く待たされた。 どうやらアップルの仕様でNSURLRequestでPOSTかつbodyに値を設定するとそうなるみたい。問題のコードは下記 NSMutableURLRequest *reque…
自クラスのインスタンスメソッドから自クラスのクラスメソッドは //クラスメソッド + (void)classMethod { //クラスメソッド処理 } //インスタンスメソッド - (void)instanceMethod { [self classMethod]; //これじゃ呼べない }上記のやり方では呼べない。 …
今更感満載ですが、NSDictionaryとNSArrayのモダン記法です。 以前の書き方は //NSDictionary NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"hachinobu", @"name", [NSNumber numberWithInt:28], @"age", nil]; NSString *name = [dic …
UIAlertViewを表示した瞬間にホームボタンでバックグラウンドへいき再度アプリを開くとUIAlertViewが出たまま画面がフリーズ状態になった。 問題が起きたのは下記コード + (void) simpleSuccessWithTitle:(NSString *)title message:(NSString *)message del…
canMoveRowAtIndexPathメソッドでセルを特定して判定してやる - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{ //セルの取得 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; if (取得…
CoreDataを使用したコードでNSFetchedResultsControllerを作成する際に 下記コードのようにsectionNameKeyPathにEntityモデルのカラムを連結した値をセットして実行したら - (NSFetchedResultsController *)fetchedResultsController { if (_fetchedResultsC…
モデルファイルを変更したくてハマった。 まず、before.sqlite → after.sqlite にリネーム。 次に、before.xcdatamodeld → after.xcdatamodeld にリネームしてビルドするとCoreDataに接続する処理で 'NSInvalidArgumentException', reason: 'Cannot create a…
プロジェクトフォルダから要らない画像ファイルを削除して起動してみたところ CopyPNGFile /Users/.../xxx.png Command /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/copypng failed with exit code 1 という…
配列の昇順は簡単なんだけど降順になると色々とやり方があるので迷ったのだけど 普段からCoreDataを使用していたのでNSSortDescriptorを使った下記やり方が一番簡単に思えた。 NSSortDescriptor *sortDesc = [[[NSSortDescriptor alloc] initWithKey:@"" asc…
メインスレッドを止めないためにdispatch_asyncを使ってネットワーク処理をバックグラウンドで行っていた。 ネットワーク処理が完了次第メインスレッドでUIを変更するのが普通だが誤ってバックグラウンド側でUIをいじる処理を書いたら、 iPhone5 iOS6ではス…
iOS5からUIWebView内のUIScrollViewを //webViewはUIWebViewのインスタンス [self.webView scrollView];で取得できるようになった。 しかしUIWebView内のUIScrollViewはreadonlyなので値を変えたりすることは出来ない。 なので自身でUIScrollViewを生成して…
あるAクラス(A.xibセット)で使用するために新たにA2.xibファイルを生成して、A2.xibファイルのオーナーをAクラスに設定した。 これで1つのクラスから状況に応じて読み込むxibファイルを変更できると思い下記読み込みをすると A *a = [[A alloc] initWithNib…
UITableViewのtitleForHeaderInSectionでNSFetchedResultsControllerから対象のテーブルオブジェクト取得 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { //Sessionsテーブルのオブジェクトの取得 _fetche…