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