【发布时间】:2012-06-20 23:40:18
【问题描述】:
我遇到了来自 Crashlytics 的问题。我有调试参数,所以我看看有什么参数。
datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 40, 0, 0)];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSString *startTimeString = [MathFunctions minutesToTimeString:[appointment.start_time integerValue]];
NSLog(@"Time: %@",startTimeString);
NSLog(@"Date: %@", appointment.date);
[dateFormatter setDateFormat:@"yyyyMMdd h:mm a"];
[Crashlytics setObjectValue:[NSString stringWithFormat:@"%@ %@", appointment.date, startTimeString] forKey:@"ResAddDate"];
NSString *dateTimeString = [NSString stringWithFormat:@"%@ %@", appointment.date, startTimeString];
NSLog(@"Date String: %@", dateTimeString);
datePicker.date = [dateFormatter dateFromString:dateTimeString];
来自 crashlytics 的崩溃日志显示日期格式正确
RESADDDATE: 20120621 12:00 AM
崩溃发生在datePicker.date = [dateFormatter dateFromString:dateTimeString];
如果日期格式存在且正确,为什么会崩溃?
Crashlytics 日志:
CoreFoundation
__exceptionPreprocess + 162
1 libobjc.A.dylib
objc_exception_throw + 32
2 CoreFoundation
+[NSException raise:format:]
3 Foundation
-[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 90
4 UIKit
-[UIDatePickerView _updateBitsForDate:forced:andReload:animateIfNeeded:] + 146
5 UIKit
-[UIDatePickerView _setDate:animated:forced:] + 348
6 UIKit
-[UIDatePickerView setDate:animated:] + 30
7 UIKit
-[UIDatePicker setDate:] + 36
8 MyApp ReserveAddController.m line 283
-[ReserveAddController showDatePicker] + 283
9 MyApp ReserveAddController.m line 179
-[ReserveAddController tableView:didSelectRowAtIndexPath:] + 179
10 UIKit
-[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 944
11 UIKit
-[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 158
12
Foundation
__NSFireDelayedPerform + 414
13 CoreFoundation
__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 14
14 CoreFoundation
__CFRunLoopDoTimer + 364
15 CoreFoundation
__CFRunLoopRun + 1206
16 CoreFoundation
CFRunLoopRunSpecific + 300
17 CoreFoundation
CFRunLoopRunInMode + 104
18 GraphicsServices
GSEventRunModal + 136
19 UIKit
UIApplicationMain + 1080
20 Appointment-Plus main.m line 16
main + 16
21 Appointment-Plus
【问题讨论】:
-
你能显示崩溃日志或跟踪吗?
-
@MichaelFrederick 我已经编辑了 OP
-
UIDatePicker 断言失败。这是一个相当不健壮的 API,所以这并不奇怪。打印出您传递给 UIDatePicker 的实际 NSDate 是明智的。还要考虑到问题可能出在您的 UIDatePicker 设置上——您可能以某种方式错误地初始化了线轴。
-
@HotLicks 一切似乎都设置正确。我无法重新创建此问题,但有时我会收到来自用户的崩溃报告。它似乎是随机的,您可以看到日期格式是正确的。
-
我们不知道 NSDateFormatter 是否正确解析了日期。它可能返回 nil,例如。
标签: objective-c nsdate nsdateformatter