アップデートが拒否された後、Appleからクラッシュログを受け取りました。
クラッシュログを確認した後、日付の解析に関連する問題のあるコードを見つけました。
デバイスでこのアプリを実行しても、このエラーは発生しません。Appleがテストしているデバイスのローカルに問題があると感じています。
私の実行中に、original
以下の文字列はに解決されました2012-12-04T11:02:29.5600000+0000
。別のロケールにある場合、他にどのような方法で表示されるのか疑問に思っています。
さらに重要なことに、Appleと同じ環境でアプリをテストするにはどうすればよいので、テストするためにレビュープロセスを待つ必要はありません。
注:私はこのコードを継承したので、日付解析機能を改善するための提案をいただければ幸いです。
[original substringToIndex:range.location+3]
クラッシュは、次の関数の呼び出しから発生しました。
+(NSString*)convertDate:(NSDate*)date withFormatter:(NSDateFormatter*)dateFormatter{
NSString *original = [dateFormatter stringFromDate:date];
NSRange range = [original rangeOfString:@"+"];
NSString *substring = [original substringToIndex:range.location+3];
NSString *substring2 = [original substringFromIndex:range.location+3];
return [NSString stringWithFormat:@"%@%@%@",substring,@":",substring2];
}
この関数の呼び出しは、次のコンテキストで行われます。
NSDate *timestamp = [NSDate date];
NSString *dateString = [DateHelper convertDate:timestamp withFormatter:UTCDateFormatter];