(初心者が、私の脳が理解するのに苦労している論理の基本的な形式であると私が想定しているものに非常に混乱しているのを目の当たりにする準備をしてください。)
現在、.plist ファイルがあります。「キー」列にはイベントの名前があり (現時点では単なるダミー コンテンツです)、「値」列には次の形式の日付があります: 19-07-2012. 各行は「文字列」タイプです。
viewDidLoad メソッドでは、次のコードを使用します。
NSString *theFile = [[NSBundle mainBundle] pathForResource:@"dates" ofType:@"plist"];
theDates = [[NSDictionary alloc] initWithContentsOfFile:theFile];
theDatesList = [theDates allKeys];
これにより、plist ファイルがディクショナリにロードされます。次に、キーを配列にロードしUITableView
ますcellForRowAtIndexPath
。
NSString *eventFromFile = [theDatesList objectAtIndex:indexPath.row];
NSString *dateFromFile = [theDates objectForKey:[theDatesList objectAtIndex:indexPath.row]];
しかし、私が今混乱しているUITableView
のは、最も早い日付に基づいてのセルをどのように並べ替えるかということです。したがって、7 月 19 日のセルは、plist ファイル内での順序に関係なく、8 月 21 日の前に表示されます。
現在の日付とplist内UITableViewCell
で定義された日付の間の日数を計算することができました。それがこのコードです:
// 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
、実際の実装の行為は過去6時間私を立ち往生させました. あるいは、彼らは正しい軌道に乗っていないのかもしれません。私が言ったように、私はかなり混乱しています。
ありがとう。