2013-01-14 22 views
0

我想使用NSDateFormatter格式化日期,但我的应用程序崩溃与EXC_BAD_ACCESS。NSDateFormatter崩溃

下面的代码:

DateInputTableViewCell *cell0 = (DateInputTableViewCell *)[paramTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; 
DateInputTableViewCell *cell1 = (DateInputTableViewCell *)[paramTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]]; 

NSString *fromDate = [[Helpers defaultFormatter] stringFromDate:cell0.dateValue]; 
NSString *toDate = [[Helpers defaultFormatter] stringFromDate:cell1.dateValue]; 

上面我碰到了两个自定义的UITableViewCell我有日期的代码。值不为空(我测试过)。但是,当我尝试从我的Helpers类使用我的defaultFormatter方法时,应用程序崩溃。下面是代码:

+ (NSDateFormatter *)defaultFormatter{ 
    defaultFormatter = [[NSDateFormatter alloc] init]; 
    NSLocale* locale = [[NSLocale alloc] initWithLocaleIdentifier:@"pt_BR"]; 
    [defaultFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"America/Sao_Paulo"]]; 
    [defaultFormatter setDateFormat:@"yyyy'-'MM'-'dd' 'HH':'mm':'ss"]; 
    [defaultFormatter setLocale:locale]; 
    [locale release]; 
    return defaultFormatter; 
} 

的自定义的UITableViewCell的NSDateFormatter这样定义:

self.dateFormatter = [[NSDateFormatter alloc] init]; 
self.dateFormatter.timeStyle = NSDateFormatterNoStyle; 
self.dateFormatter.dateStyle = NSDateFormatterMediumStyle; 

我看到了一些类似的问题在这里,但未能解决这个问题!

在此先感谢!

编辑

enter image description here

+0

包括崩溃日志可能会帮助... –

+1

哪里是你的''中的方法defaultFormatter'声明return'?设置这些值后,您应该返回'defaultFormatter'。 – iDev

+0

我忘了包含return语句!代码编辑! – CainaSouza

回答

1

defaultFormatter方法不返回任何东西,所以你得到一个垃圾值,您尝试发送stringFromDate:消息导致崩溃。编译器应该警告你这个问题,所以一定要修正你的编译器警告!

+0

我忘了包含返回语句!代码编辑! – CainaSouza

0

正如我的意见所述,您的defaultFormatter方法中缺少return声明。设置值后,您应该返回defaultFormatter

它应该是这样的,

+ (NSDateFormatter *)defaultFormatter{ 
    defaultFormatter = [[NSDateFormatter alloc] init]; 
    NSLocale* locale = [[NSLocale alloc] initWithLocaleIdentifier:@"pt_BR"]; 
    [defaultFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"America/Sao_Paulo"]]; 
    [defaultFormatter setDateFormat:@"yyyy'-'MM'-'dd' 'HH':'mm':'ss"]; 
    [defaultFormatter setLocale:locale]; 
    [locale release]; 
    return defaultFormatter; 
} 
+0

我忘了包括返回声明!代码编辑! – CainaSouza

+0

'defaultFormatter'被声明是你的代码中的'@ property'? – iDev

+0

不,它是一个静态的'静态NSDateFormatter * defaultFormatter;' – CainaSouza