iPhone PList和NSDate问题
我正在做:iPhone PList和NSDate问题,iphone,objective-c,ios4,plist,Iphone,Objective C,Ios4,Plist,我正在做: NSString *path = [[self class] pathForDocumentWithName:@"Alarms.plist"]; NSArray *alarmDicts = [NSMutableArray arrayWithContentsOfFile:path]; if (alarmDicts == nil) { NSLog(@"MER. Unable to read plist file: %@", path); path = [[NSBundl
NSString *path = [[self class] pathForDocumentWithName:@"Alarms.plist"];
NSArray *alarmDicts = [NSMutableArray arrayWithContentsOfFile:path];
if (alarmDicts == nil)
{
NSLog(@"MER. Unable to read plist file: %@", path);
path = [[NSBundle mainBundle] pathForResource:@"Alarms"
ofType:@"plist"];
alarmDicts = [NSMutableArray arrayWithContentsOfFile:path];
}
_displayedObjects = [[NSMutableArray alloc]
initWithCapacity:[alarmDicts count]];
for (NSDictionary *currDict in alarmDicts)
{
Alarm *alarm = [[Alarm alloc] initWithDictionary:currDict];
[_displayedObjects addObject:alarm];
}
pathForDocumentWithName只是一个助手方法,假设它可以工作(确实可以)。我将plist的所有值添加到一个对象中,并将其存储在一个数组中。现在如果我这样做:
NSUInteger index = [indexPath row];
id alarm = [[self displayedObjects] objectAtIndex:index];
NSString *title = [alarm title];
[[cell detailTextLabel] setText:title];
它工作得非常好。但在尝试格式化plist文件中的NSDate类型时(列为“datetime”)
对于alarmDicts,它抛出为nil的NSLog,并为字符串返回nil。我没有主意了,我已经试了几个小时来解决这个问题。有人有什么想法吗
另外,如果我打印出datetime的描述,它也能很好地工作。当我尝试在其上使用NSDateFormatter时,只有零和错误出现。大量猜测,但您确定属性列表中的日期被作为NSDate对象读入吗?如果我是你,我会检查你的NSDate对象的类型,例如
NSLog(@"%@", [[alarm datetime] class]);
我怀疑它们是作为NSStrings加载的,NSDateFormatter将拒绝处理这些字符串,但它们仍然会正确记录
无关评论:我确信这只是一个复制粘贴错误,但您在第一段代码的底部泄漏了“报警”对象。是的,这只是一段代码。你是对的。虽然它说它是一个NSDate对象,但我重新创建了.plist文件,现在它可以工作了。谢谢你的意见!似乎我需要一双新的眼睛。
NSLog(@"%@", [[alarm datetime] class]);