2010年12月25日土曜日

NSDateFormatterで文字列→日付に変換で困った


.NET/WCFのRESTなサービスからGETしたXMLをiPhone側でオブジェクトにするときのお話。
iOS SDKのバージョンは4.2。

サービスからGETしたXMLの日時型は、こんな文字列になってます。

2010-12-25T09:31:49.3974609+09:00

この文字列をNSDateFormatter dateFromString: でNSDateに変換しようとしても変換してくれません。

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZ"];
NSDate *converted = [dateFormatter dateFromString:str];

仕方なくヘルプを見ると、

The format string uses the format patterns from the Unicode standard (this reference is to version tr35-6 for Mac OS X v10.5; for Mac OS X v10.4 use version tr35-4). (When the formatter is in v10.0 mode, you must use the old-style format strings, described in “Date Format String Syntax (Mac OS X Versions 10.0 to 10.3).”) Note with the Unicode format string format, you should enclose literal text in the format string inside single quotes ('), as illustrated in the following example:

iOS 4.2はtr35-6?tr35-4?
んーどうも、NSDateFormatter setDefaultFormatterBehavior: で10.5と10.4を切り替えれるみたいだけど、デフォルトはv10.5モードなので、tr35-6の仕様なのか。
というわけで、tr35-6の仕様を見ると、
Z 1..3 -0800 Use one to three letters for RFC 822, four letters for GMT format.
となってて、Zが1−3桁の場合RFC 822フォーマット、4桁の場合GMTフォ−マットとなるのですね。
(なんかややこしい仕様だな)
お!RFC 822の場合 +hhmmで間にコロン(:)が入ってたらダメなの?

というわけで、コロンを除いた文字列をdateFromString:に渡すと、無事変換してくれましたとさ。

適当に文字列から日付に変換してくれる仕組みってないのかなあ?

2010年12月15日水曜日

dSymbolizerでクラッシュログを解析!


iPhoneアプリで開発途中のアプリがクラッシュした経験がありますよね!(決めつけ)
オーガナイザでデバイスのクラッシュログを確認すると思いますが(決めつけ)、
どこでクラッシュしたか分かりませんよね!

そんなとき dSymbolizer

シンプルな画面
  1. dSYMファイルを指定して、クラッシュログを画面にペーストしてResolve
  2. 警告が出ますが、Continue anywayを選択
  3. 完了
元のクラッシュログが、
"13 Untitled 0x000027ae 0x1000 + 6062"
みたいにアドレスでどこだか分からなかったのが、
"13 Untitled 0x000027ae -[RootViewController viewDidLoad] +54(RootViewController.m:25)"
のように、ソースレベルでのクラッシュした箇所が分かります!

2010年11月21日日曜日

Quicksilverをアップデートしたら...


Quicksilverをβ58(3841)にアップデートした。
すると前回設定したIMEの入力ソースのオプションが効かない...

なぜだなぜだと悩んでたら、これだった。

2010年9月24日金曜日

InputSwitcher、今までありがとう。



QuickSilver起動時にIMEをオフにしたくてInputSwitcherを使ってたんだけど、
によると、Snow Leopardの標準機能で実現できるようなんだ。

システム環境設定から、言語とテキストを選んで、
入力ソースのオプションを「書類ごとに異なるものを使用」にすればよさそう。


というわけで、InputSwitcherこれまでありがとう。
助かりました。

2010年7月14日水曜日

ゆめをみた


僕はもう死んでて幽霊になってた。

子どもに気づいてもらおうと紙をひらひらさせたりした。
子どもは楽しそうに不思議そうに笑っていた。

やっぱり気づいてもらえないんだなと思っていたら、
子どもが「おとうさん」と言ってくれた。

そこで目が覚めた。
だらだらと涙が流れていた。

2010年6月7日月曜日

QuickSilverにはInputSwitcherを!


QuickSilver というランチャみたいなものを愛用しています。

- 基本的な使い方 -
1 ホットキー(僕の場合はcontrol+英数)で起動
2 キーボードで起動したいアプリケーションの頭文字を入力
3 enterキーでそのアプリケーションが起動!

- 困っちゃうな -
1 日本語での入力には対応していないため必ず起動時にIMEをオフしてあげないと行けない
2 これを結構忘れてしまうと残念な気持ちになる

- これで解決 -
1 InputSwitcherをインストール
2 わかばマークのMacの備忘録さんの この記事の【 InputSwitcher を使う 】(ありがとうございます、これで助かりました)のように、ホットキー時のトリガーを登録する
2 アプリケーションごとでIMEのオン/オフを覚えてくれるようになるよ
3 QuickSilverを起動してもIMEはオフのまま!

2010年5月16日日曜日

Google Chromeに乗り換えたいんだけど...


やっぱり、ちょっと速い気がするので、SafariからGoogle Chromeに乗り換えたい!

[インストールした拡張]
1Password Extension
AutoPagerize for Chrome
ChromeMigemo
MigemoFindInPage
Taberareloo
Xmarks Bookmarks Sync

[乗り換えに至るにまだ解決できていないところ ]
- テキスト選択して辞書検索
SafariならCommand+Control+D
- 1Password Extensionの機能、まだ不十分。(マダαダシネ)
自動でログインしてくれない、新しいログインを登録できない
- Safari StandのQuick Searchが欲しい
MigemoFindInPageでもいい感じだけど、やっぱりQuick Searchしたい
- Tumblrに画像右クリックで投げたい
Taberarelooまでは入れたけど、コンテキストメニューからの投稿はできないみたい

2010年4月25日日曜日

JR宝塚線脱線事故から5年


あのJR宝塚線脱線事故から5年経ったんですね。

そのとき、あの列車の次の列車に乗っていました。
あの列車に乗るはずが、トイレに行きたくなって乗り過ごしたのです。

線路の上で降りて、現場付近まで歩いたのを思い出します。

現場での野次馬になんだか無性に腹が立っていて、後でニュースを見て被害者の多さに
びっくりしました。

今、健康に生きている事を感謝してしまう日なのでした。

2010年2月16日火曜日

そのうちに書きたい事


●Fluent NHibernate&SQLite vs db4objects
●Silverlightでtwitterをいろいろいろいろ

2010年2月11日木曜日

結婚記念日


ゴム婚式だそうで...祝う気になれない



Wikipediaより
1周年:紙婚式
2周年:藁婚式、綿婚式
3周年:革婚式、糖果婚式
4周年:花婚式、(絹婚式)、皮婚式(皮革婚式)、書籍婚式
5周年:木婚式
6周年:鉄婚式
7周年:銅婚式
8周年:青銅婚式、ゴム婚式、電気器具婚式
9周年:陶器婚式
10周年:アルミ婚式、錫婚式
11周年:鋼鉄婚式
12周年:絹婚式、亜麻婚式
13周年:レース婚式
14周年:象牙婚式
15周年:水晶婚式
20周年:磁器婚式、陶器婚式
25周年:銀婚式[1]
30周年:真珠婚式
35周年:珊瑚婚式
40周年:ルビー婚式
45周年:サファイア婚式
50周年:金婚式
55周年:エメラルド婚式
60周年:ダイヤモンド婚式
75周年:プラチナ婚式