编写用nil初始化的NSDate导致EXC_BAD_ACCESS

时间:2011-11-20 11:42:46

标签: iphone objective-c cocoa-touch nsuserdefaults exc-bad-access

在我的一种方法中,我尝试使用NSDate清除nil数据,并将其保存为默认值。当我尝试保存时,我的应用已收到"EXC_BAD_ACCESS" 和崩溃。

任何想法?
也许有另一种方法来清除NSDate对象?

2 个答案:

答案 0 :(得分:0)

为什么不使用

[userDefaults removeObjectForKey:@"yourdatekey"]

答案 1 :(得分:0)

您可以(A)将[NSNull null]写入userDefaults,或者(B)完全从默认值中删除值,而不是尝试将NIL写入userDefaults(这将无效)。

解决方案A:

然而,这需要为您的应用添加更多逻辑。

<强>存储

[...]
id objectForDefaults = [NSNull null];
if (myDate != nil)
{
  objectForDefaults = myDate;
}
[userDefaults setObject:objectForDefaults forKey:@"mydate"];
[...]

<强>检索:

[...]
NSDate *myDate = nil;
id objectFromDefaults = [userDefaults objectForKey:@"mydate"];
if (objectFromDefaults != [NSNull null])
{
  myDate = objectFromDefaults;
}
[...]

解决方案B:

[userDefaults removeObjectForKey:@"mydate"]