2
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的类型时(被列为“日期时间”)
NSDate *datetime = [alarm datetime];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm"];
[[cell textLabel] setText:[formatter stringFromDate:datetime]];
它抛出的NSLog为alarmDicts是零,并返回nil的字符串。我没有想法,并试图解决这个问题几个小时。有人有主意吗?
另外,如果我打印出日期时间的描述,它完美的作品。当我尝试在其上使用NSDateFormatter时,只有nils和错误。
是啊,这只是片段。你是对的。虽然它表示它是一个NSDate对象,但我重新创建了.plist文件,现在它可以工作。感谢您的输入!好像我需要一双新的眼睛。 – Pete 2010-11-07 18:26:55