私は最近、入力された日付から患者の年齢を計算する医療アプリに機能を追加しました。年齢がゼロの場合、日付ピッカーは1950年1月1日を出生日の入力のデフォルトの開始日として表示します。このコードは、iPhoneとiPadハードウェアのiOS 4.0以降で正常に動作します。しかし、アプリのアップデートを提出する直前にテストすると、iOS 3.1.3のテスト用に保管している第1世代のiPodで日付ピッカーがクラッシュすることが判明しました。私は、日付ピッカーのデフォルトの日付を設定します犯人として、次のコードを絞り込ん:日付ピッカーコードの問題
if (age == 0) {
NSDateFormatter *myFormatter = [[NSDateFormatter alloc] init];
[myFormatter setDateFormat:@"M/d/yy"];
NSDate *initialDate = [myFormatter dateFromString:@"January/01/1950"];
[picker setDate:initialDate animated:YES];
}
のiPodからのログは、クラッシュの後に以下の2行を示しています。
<Warning>: *** Assertion failure in -[UIDatePickerView _updateBitsForDate:andReload:animateIfNeeded:], /SourceCache/UIKit/UIKit-984.38/UIDatePicker.m:908
と
を<Error>: *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: date'
このクラッシュが旧式のデバイスでのみ発生する理由とその解決方法を理解していただければ幸いです。前もって感謝します。
_updateBitsForDate:andReload:animateIfNeeded:カスタムメソッドになります。コードを投稿してください。 – msgambel
@MSgambel: '_updateBitsForDate:andReload:animateIfNeeded:'はAppleの内部メソッドです。 – titaniumdecoy