2011-08-03 64 views
0

我最近在我的醫療應用程序中添加了一項功能,可根據輸入日期計算患者的年齡。如果年齡爲零,則日期選擇器顯示1950年1月1日作爲輸入出生日期的默認開始日期。該代碼在iPhone和iPad硬件上的iOS 4.0+上運行良好。但是,在提交應用更新之前進行測試時,我發現日期選取器在我的第一代iPod上崩潰,我用它來測試iOS 3.1.3。我縮小了下面的代碼的罪魁禍首,它設置默認日期爲日期選擇器:日期選擇器代碼問題

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的日誌顯示崩潰後下面兩行:

<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' 

我很感激任何幫助理解爲什麼這個崩潰只發生在舊設備上,以及如何解決這個問題。提前致謝。

+0

_updateBitsForDate:andReload:animateIfNeeded:看起來是一種自定義方法。發佈代碼以獲取幫助。 – msgambel

+0

@ MSgambel:'_updateBitsForDate:andReload:animateIfNeeded:'是一個內部Apple方法。 – titaniumdecoy

回答

3

根據tr35-10標準,您的日期格式應爲MMMM/dd/yyyy

您還應該cache formatters for efficiency

+0

非常感謝。在解決問題的代碼中將「M/d/yy」更改爲「MMMM/dd/yyyy」。我猜想iOS 4比iOS 3更寬容。這個問題也向我展示了在所有支持的硬件上測試更新的價值。 – user183804