首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSDateFormatter碰撞

NSDateFormatter碰撞
EN

Stack Overflow用户
提问于 2013-01-14 19:04:01
回答 2查看 1K关注 0票数 0

我正在尝试用NSDateFormatter格式化一个日期,但我的应用程序正在与EXC_BAD_ACCESS崩溃。

下面是代码:

代码语言:javascript
复制
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中获取日期的。这些值不是null (我已经测试过)。但是当我尝试使用我的Helpers类中的defaultFormatter方法时,应用程序就会崩溃。以下是代码:

代码语言:javascript
复制
+ (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定义如下:

代码语言:javascript
复制
self.dateFormatter = [[NSDateFormatter alloc] init];
self.dateFormatter.timeStyle = NSDateFormatterNoStyle;
self.dateFormatter.dateStyle = NSDateFormatterMediumStyle;

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

提前感谢!

编辑

EN

回答 2

Stack Overflow用户

发布于 2013-01-14 19:07:57

您的defaultFormatter方法没有返回任何内容,因此您得到一个垃圾值,尝试向其发送导致崩溃的stringFromDate:消息。编译器应该警告您这一点,所以总是修复您的编译器警告!

票数 1
EN

Stack Overflow用户

发布于 2013-01-14 19:08:53

正如我的注释中提到的,return语句在defaultFormatter方法中缺失。您应该在设置值之后返回defaultFormatter

应该是这样的,

代码语言:javascript
复制
+ (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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14324849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档