gpt4 book ai didi

iphone - NSDate 和 NSDateFormatter 问题

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:21 26 4
gpt4 key购买 nike

我有点难以理解为什么以下代码会导致我的应用程序崩溃:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMMM d, yyyy"];
NSDate *date = [dateFormatter dateFromString:cDate];
datePicker.date = date;
NSString *dateStr = [dateFormatter stringFromDate:date];
[dateLabel setText:dateStr];
[dateFormatter release];

如果我注释掉上面的内容,应用就没问题了。此外,如果我将日期格式更改为以下格式,则不会发生崩溃:

[dateFormatter setDateFormat:@"yyyy-MM-dd"];

在我的 UIDatePicker 委托(delegate)中,我重复了如下代码(并且效果很好):

-(IBAction)datePickerValueChanged:(id)sender 
{
NSDate *date = [datePicker date];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"MMMM d, yyyy"];
NSString *dateStr = [dateFormatter stringFromDate:date];
[dateLabel setText:dateStr];
}

我得到的错误如下:

*** Assertion failure in -[UIDatePickerView _updateBitsForDate:andReload:animateIfNeeded:], /SourceCache/UIKit/UIKit-747.38/UIDatePicker.m:892

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: date'

最佳答案

问题在于输入日期的格式为“yyyy-MM-dd”,但您与 dateFromString 一起使用的日期格式化程序的格式为“MMMM d, yyyy”。如果您希望接受这两种格式,则需要尝试使用这两种格式进行解析。

例如:

[dateFormatter setDateFormat:@"MMMM d, yyyy"];
NSDate *date = [dateFormatter dateFromString:cDate];
if (date == nil) {
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
date = [dateFormatter dateFromString:cDate];
if (date == nil) {
// Handle the situation where the date string could not be parsed
}
}

关于iphone - NSDate 和 NSDateFormatter 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/572132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com