(准备好见证一个新手非常非常困惑,我认为这是我的大脑难以掌握的基本逻辑形式。)
我现在有一个 .plist 文件。在“Key”列中有事件的名称(目前只是虚拟内容),在“Value”列中有这种格式的日期:19-07-2012。每行都是“字符串”类型。
在 viewDidLoad 方法中,我使用以下代码:
NSString *theFile = [[NSBundle mainBundle] pathForResource:@"dates" ofType:@"plist"];
theDates = [[NSDictionary alloc] initWithContentsOfFile:theFile];
theDatesList = [theDates allKeys];
这会将 plist 文件加载到字典中,然后将键加载到数组中,这是我学会填充 a 的方式UITableView
,特别是在方法中使用以下代码cellForRowAtIndexPath
:
NSString *eventFromFile = [theDatesList objectAtIndex:indexPath.row];
NSString *dateFromFile = [theDates objectForKey:[theDatesList objectAtIndex:indexPath.row]];
但是我现在很困惑的是,我如何UITableView
根据最快的日期订购细胞?因此,7 月 19 日的单元格将出现在 8 月 21 日之前,无论它在 plist 文件中的顺序如何。
在UITableViewCell
我已经设法计算了当前日期和 plist 中定义的日期之间的天数。就是这个代码:
// Set the date format
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
// Get the current, then future date
NSDate *currentDate = [NSDate date];
NSDate *futureDate = [dateFormatter dateFromString:dateFromFile];
// Create the calendar object
NSCalendar *theCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
// Extract the "day" component from the calendar object
NSDateComponents *theDifferenceBetweenDays = [theCalendar components:NSDayCalendarUnit
fromDate:currentDate
toDate:futureDate
options:0];
NSInteger theRemainingDays = [theDifferenceBetweenDays day];
但我真的不知道我在做什么。有人可以在正确的方向上轻推我吗?我研究了似乎相关NSSortDescriptors
的方法,但实际实施的行为让我在过去六个小时内陷入困境。sortedArrayUsingSelector
或者,也许他们不是正确的轨道。就像我说的,我很困惑。
谢谢。