MacにRMagickをインストールしようとしたらCan’t find MagickWand.h

MacにRMagickをインストールしようとしたら詰まったのでメモ。
ほぼ同じ環境だと思っていた会社のMacにはすんなり入ったのに、自宅のMacでハマってしまった・・・

こんな感じでImageMagickとRMagicのインストールを実行

出たエラーはこちら

調べてみるとPKG_CONFIG_PATHが間違っているとの情報を見つけたので正しくパスを指定する。

それでもエラーがでる!
どこもかしこもこの対応方法しか書いていなくて、だいぶまいっていたところで新しい情報を発見。
Configuring ImageMagick, Rmagick, and Homebrew to play nicely together on OS X Mavericks

この記事の通りに以下を実行して無事インストールが完了しました。。。

SDWebImageを使用していたら、アーカイブだけエラー

SDWebImageを使用したiPhoneアプリで、シミュレータ・実機ともに正常に動作するのにアーカイブだけエラーが出るという現象に遭遇。

エラーはこんなの。

調べてみると、if defined(ARM_NEON)という記述をif defined(_ARM_ARCH_7)にしたらいいみたい。
SDWebImageの場合は該当箇所はdsp.hとcpu.cの2箇所。

こうなってるのを。。

こう修正。

UITableViewで余分な境界線を非表示にする。

UITableViewで2行だけデータを表示したいとき。
残りのcellには何もデータがないのに、境界線だけ表示されてしまってなんか気持ち悪い。
それを解決するのに一番簡単っぽい実装はこれ。

JSONModelで必須でない項目を設定する – Objective-C

例えば、APIの返り値が「id=1, name=foo, address=bar」だった場合で、受け取り側には「id, name, address, age」が設定されていた場合。

みたいなエラーが表示されます。
軽く調べたら、

こうすればokみたいな記事を見つけたけど上手くいかず。。。
結局解決するには以下のメソッドを実装。

NSDictionaryの配列からNSPredicateで検索するには。

NSDictionaryの配列からNSPredicateで検索するには。

ちなみに普通に文字列の配列だった場合は、以下のように書く。

配列の中身がDictionaryだった場合はこう書く。

UITableViewCellを最初から選択状態にする

viewDidAppear内に下記を記述。

NSDictionaryをforでまわすと順序が保証されない(高速列挙)

NSDictonaryをなんとなく高速列挙してたら、期待している通りの順番で返ってこなかったのでメモ。

NSArrayのsortedArrayUsingComparatorでソートしてから取り出すようにしました。

Xcodeがインストール中のまま終わらない

Xcodeのアップデートをしたら、インストール中のまま進まなくなってXcodeが起動すらできなくなってしまった。。。
グーグル先生に聞いて、以下の方法で解決しました。

  1. App Storeを終了する。
  2. アクティビティモニタを開く。
  3. storeagentというプロセスを強制終了させる。
  4. App StoreでXcodeを検索!

無事、Xcodeが「アップデート」と表示されました。

そのままいつもと同じようにアップデートしてたら問題なく終了。
それにしてもXcodeってすごい容量。MacBookProがギュンギュンいう。

symfony2のExceptionListenerでjsonを返却する。

symfony2を使っていて、自作したExceptionクラスを投げ、それをExceptionListenerで受け取ってjsonで返却しようとしたところsymfony2のエラー画面が表示されてしまった。
jsonで返却するために以下のようにコードを記述。

エンコード形式をおまかせする場合はこんな感じ。

でも、今回は指定したエンコード形式で返却したかった。
ちょっと調べたら、そういう場合はJsonResponseじゃなくてResponseを使うみたい。

無事、指定したエンコード形式でjsonを返却することができました。

iOS7 – スクロールでステータスバーは残しつつ、ナビゲーションバーは隠す動きを実現。

Facebookアプリみたいに、下にスクロールするとナビゲーションバー「だけ」を隠したい。
少しハマったのでメモ。
#普通に実装してるとステータスバーまで消えてしまった。それは意図した動きではない。

こんな感じにしたい

facebookのナビゲーションバーはスクロールすると隠れる(ステータスバーは残る)

facebookのナビゲーションバーはスクロールすると隠れる(ステータスバーは残る)




探してみると要望通りの動きを実現してくれそうなライブラリを発見!
https://github.com/luugiathuy/GTScrollNavigationBar

実装方法は以下の通り。

基本的にはこれで動作します。
実装が終わったnavigationBarにrightBarButtonItem等をのせて画面遷移したい場合は、pushViewControllerをこんな風にする必要があります。