2011-06-27 81 views
0

我已经花了整整一天的时间在这方面做了很多工作,重写了很多次,试图让我的脑海里浮现出它。NSDate自动发布导致错误的exe文件错误。 iPhone

我有一组在头

@property (nonatomic, retain)NSDate *time; 

上查看没有负载我从数据库中读取一个字符串声明的日期,将其转换为一个日期,它设置这个变量。

NSDateFormatter *dateFormatter =[[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setDateFormat:@"dd/MMMM/yyyy"]; 
time=[dateFormatter dateFromString:datetime]; 

如果我NSLog时间我得到预期的日期(虽然不是正确的格式)。如果我然后在视图中进一步使用NSDate,那么我会得到一个错误的exe错误,或者由于时间错误=无。

我不明白它几乎就像它不保留它。

虽然解决问题的方法是在IBAction中创建一个新日期,并尝试复制上面的代码,但是它需要的地方和我遇到同样的问题。我认为这是dateformat问题,但我格式化它原来写成字符串的方式。

我在做什么错了?我不能在这一天再放松一天。

欢呼

回答

2

你需要的属性为self.time = [dateFormatter dateFromString:datetime];[self setTime: [dateFormatter dateFromString:dateTime]]

如果您只是使用=而不使用self来指定它,它将不会保留它,它只会传输指针。使用点运算符将使它保留它。

+0

非常感谢。讨厌这件事很简单。这就是为什么!非常感激。 – Dan

0

您需要使用:self.time = [dateFormatter dateFromString:datetime];

1

的问题是,你没有设置该属性。 time在那里没有使用点符号。你要么必须编写为(假定财产自我存在的),两种方式是一个:

self.time = [dateFormatter dateFromString:datetime]; 

[self setTime: [dateFormatter dateFromString:datetime]]; 
1

你需要将其分配到使用

self.time = [dateFormatter dateFromString:datetime]; 

否则它不会保留

+0

哇 - 1分钟内四个几乎相同的答案:-) –

1

你的财产尝试使用self.time,这将通过生成的setter方法,这将保留日期,目前你只是将它分配给实例变量。