This question already has an answer here:
Invalid parameter not satisfying: date
                            
                                (1个答案)
                            
                    
                7年前关闭。
        

    

我几个小时前创建了一个帖子,但这是不正确的,我误认为是导致崩溃的事情。因此,我已将其重新发布,希望您不要为此而怪我。

我有一个拥有datePicker的视图,我的观点是不显示选择器上的当前日期,而是显示“旧”日期(我选择1987年)。但是我不知道出了什么问题,当我在模拟器上启动应用程序时,它运行得很好,但是当我在视图加载之前切换到iPhone应用程序时崩溃了。有代码:

-(void)defaultBirthdayPickerDate{

    NSString *dateString = @"09-Oct-1987";
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    dateFormatter.dateFormat = @"dd-MMM-yyyy";
    NSDate *date = [dateFormatter dateFromString:dateString];
    [self.birthdayPicker setDate:date];

}


然后:

- (void)viewDidLoad
{

    [self defaultBirthdayPickerDate];
    [super viewDidLoad];
}


有东西,某处会导致崩溃的地方:

2013-03-05 15:50:31.070 DeathLine[2985:907] *** Assertion failure in -[_UIDatePickerView _setDate:animated:forced:], /SourceCache/UIKit/UIKit-2380.17/_UIDatePickerView.m:302
2013-03-05 15:50:31.073 DeathLine[2985:907] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: date'
*** First throw call stack:
(0x325042a3 0x3a22197f 0x3250415d 0x32dd9ab7 0x344bdf15 0x344c6429 0x3458f989 0x14a6b 0x148db 0x3432b595 0x3438014b 0x34380091 0x3437ff75 0x3437fe99 0x3437f5d9 0x3437f4c1 0x3436db93 0x28f4c33 0x3436d833 0x343f70c5 0x343f7077 0x343f7055 0x343f690b 0x343f6e01 0x3431f5f1 0x3430c801 0x3430c11b 0x360225a3 0x360221d3 0x324d9173 0x324d9117 0x324d7f99 0x3244aebd 0x3244ad49 0x360212eb 0x34360301 0xcc21 0x3a658b20)
libc++abi.dylib: terminate called throwing an exception


我知道[self.birthdayPicker.date]不是NULL,但是我不知道如何解决问题。

最佳答案

我的猜测是这是由您的设备和模拟器中设置的不同语言环境(NSLocale)引起的。请注意,只有将格式化程序的语言环境设置为英语(因为09-Oct-1987代表英语的Oct),格式化程序才能解析October日期。否则,它将返回nil,并将nil设置为UIDatePicker将导致您看到错误。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en"];

关于iphone - 无法正确设置datePicker的默认日期,在iOS设备上崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15223131/

10-12 00:18
查看更多