月別アーカイブ: 2013年5月

google analytics for iOS

地味にハマったなー、アナルティックスに

cruxbookGoogle Analytics SDK for iOS埋め込んだのに全然レポートにあがってこないな~って思ってたら、、、アプリ用に別途トラッキング対象がアプリになったプロパティを作成しないと行けないのでした

普通にスマホサイト用のプロパティID入れて、ウェブサイト向けのプロパティでレポート見てたから、これじゃ当然何もレポートされないわけですね

*

新しいプロパティID埋め込んだらちゃんとレポートも表示されたし

これでマーケティング用のデータが作れるよ!!

とりあえず今200人ぐらい登録されている方がいるんですよね

mysql> select count(*) from member;
+----------+
| count(*) |
+----------+
|      194 |
+----------+
1 row in set (0.00 sec)

これ、かなりアーリーアダプター(言いたいだけ)な人達だと思うんです。まぁ今はこれぐらいでいいかなぁと。まだアプリがかなり未熟なので、もう少し完成度高めてからユーザが増えれば(増やせられると)いいなぁと思ってます

アプリがどの程度使われているのか、興味津々です

こんなログがConsoleに出てきたので余計な仕事が増えた~

2013-05-31 11:29:14.131 CruxBook[10382:6603] Google Maps SDK for iOS version: 1.2.2.3031
2013-05-31 11:29:14.132 CruxBook[10382:6603] New version of Google Maps SDK for iOS available: 1.3.0.3430

NSNull and nil differ

今日のハマリ

さっき、cruxbookのv1.0.3のアップデートが公開されたのでウキウキしながらアップデートしました

これでやっと課題検索が動く…と、課題検索をしてみるとバッチリ動いています

しかし、その後の検索結果からの課題の詳細を見ようとするとアプリが落ちる!!!

なんでー?? テストの時はそんなことなかったのにな~ と思い焦りながらも、開発環境のソースコードのサービスアクセス先を本番環境のサーバに変えて試してみたところ、落ちた~!! デバッガーで追ってみると、どうやら課題のコメントが入力されていない場合に落ちる様子

課題詳細画面のcellForRowAtIndexPath:ではこんな処理をしている

        // メモ
        NSString *string = [self.problem valueForKey:@"comment"];
        UITextView *view = (UITextView *)[cell viewWithTag:2];
        if (view == nil) {
            view = [[UITextView alloc] initWithFrame:CGRectMake(20, 10, 280, 280)];
            view.tag = 2;
            view.editable = NO;
            view.backgroundColor = [UIColor clearColor];
            [cell addSubview:view];
        }
        view.text = string;

このstringが悪さをしているみたいだ。UITextViewがこれに対してなんらかの処理をしようとするときに落ちている。そんなわけで、最初はこのようにコードを変えてみた

        // メモ
        NSString *string = [self.problem valueForKey:@"comment"];
        UITextView *view = (UITextView *)[cell viewWithTag:2];
        if (view == nil) {
            view = [[UITextView alloc] initWithFrame:CGRectMake(20, 10, 280, 280)];
            view.tag = 2;
            view.editable = NO;
            view.backgroundColor = [UIColor clearColor];
            [cell addSubview:view];
        }
       if (string) {
            view.text = string;
        }

つまり、if (string != nil) と同じ解釈。でも、これでは不等式は成立せずにview.textにstringが代入されてしまう。結果、アプリも落ちる。調べてみたところ、このstringがnilなのかと思いきやそうでもないようだ

http://d.hatena.ne.jp/shoby/20110319/1300567422

こちらを参考に下記のように修正したところ、うまく動いた

        // メモ
        NSString *string = [self.problem valueForKey:@"comment"];
        UITextView *view = (UITextView *)[cell viewWithTag:2];
        if (view == nil) {
            view = [[UITextView alloc] initWithFrame:CGRectMake(20, 10, 280, 280)];
            view.tag = 2;
            view.editable = NO;
            view.backgroundColor = [UIColor clearColor];
            [cell addSubview:view];
        }
        if (![string isEqual:[NSNull null]]) {
            view.text = string;
        }

それはいいのだが、このアップデートが反映されるまでいますぐにアップデートを提出しても1週間はかかる!!! やべぇなぁ、どうしよう、と思ったんだけど、とりあえずサーバ側で


sql> update problem set comment = ' ' where comment is null;

したったww これでとりあえず表示されている