ECGraph不工作的设备,而是适用于模拟器 [英] ECGraph not working on device, but works on simulator
本文介绍了ECGraph不工作的设备,而是适用于模拟器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是没有任何理由ECGraph将在模拟器上运行良好,但还没有给我这个错误,当我在我的设备上运行它:
is there any reason why ECGraph would run fine on the simulator, but yet give me this error when i run it on my device:
2012-08-24 01:57:18.543 Portfolio[3538:907] *** -[__NSCFCalendar components:fromDate:toDate:options:]: fromDate cannot be nil
I mean really, what do you think that operation is supposed to mean with a nil fromDate?
An exception has been avoided for now.
A few of these errors are going to be reported with this complaint, then further violations will simply silently do whatever random thing results from the nil.
Here is the backtrace where this occurred this time (some frames may be missing due to compiler optimizations):
(
0 CoreFoundation 0x37a1d78f <redacted> + 86
1 Portfolio 0x000a0d1f -[ECGraph(Private) getDaysFrom:To:] + 202
2 Portfolio 0x000a1577 -[ECGraph(Private) getXDaysFromLines:minDate:] + 502
3 Portfolio 0x000a2623 -[ECGraph drawCurveWithLines:lineWidth:color:] + 978
4 Portfolio 0x000a716f -[GraphView drawRect:] + 2682
5 UIKit 0x38b1811d <redacted> + 364
6 QuartzCore 0x39468035 <redacted> + 112
7 QuartzCore 0x39467771 <redacted> + 1808
8 QuartzCore 0x39466f45 <redacted> + 980
9 QuartzCore 0x39466a7b <redacted> + 202
10 QuartzCore 0x3953a9f5 <redacted> + 24
11 QuartzCore 0x394663d3 <redacted> + 238
12 QuartzCore 0x39466119 <redacted> + 316
13 QuartzCore 0x3945dfe1 <redacted> + 60
14 CoreFoundation 0x37a4f18d <redacted> + 20
15 CoreFoundation 0x37a4d3f9 <redacted> + 276
16 CoreFoundation 0x37a4d74f <redacted> + 742
17 CoreFoundation 0x379cbc1d CFRunLoopRunSpecific + 356
18 CoreFoundation 0x379cbaa9 CFRunLoopRunInMode + 104
19 GraphicsServices 0x3a88f33b GSEventRunModal + 74
20 UIKit 0x38b35535 UIApplicationMain + 1120
21 Portfolio 0x00094e7d main + 152
22 Portfolio 0x00094de0 start + 40
)
推荐答案
您正试图从一个零的NSDate这样得到NSDateComponents:
You are trying to get NSDateComponents from a nil NSDate like that:
NSCalendar* gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate* fromDate = nil;
NSDate* toDate = [NSDate date];
unsigned int components = NSYearCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit;
NSDateComponents* dateComponents = [gregorian components:uintFlags fromDate:fromDate toDate:toDate options:0];
可能是一个简单的检查可能是有用的:
Probably a simple check can be useful:
NSDate* fromDate = nil;
NSDate* toDate = [NSDate date];
NSDateComponents* dateComponents = nil;
if(fromDate != nil)
{
NSCalendar* gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
unsigned int components = NSYearCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit;
dateComponents = [gregorian components:uintFlags fromDate:fromDate toDate:toDate options:0];
}
这篇关于ECGraph不工作的设备,而是适用于模拟器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文