4

(初心者が、私の脳が理解するのに苦労している論理の基本的な形式であると私が想定しているものに非常に混乱しているのを目の当たりにする準備をしてください。)

現在、.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];

しかし、私は自分が何をしているのか本当にわかりません。誰かが私に正しい方向への微調整を与えることができますか? 私は関連しているように見える方法を調べましたNSSortDescriptorssortedArrayUsingSelector、実際の実装の行為は過去6時間私を立ち往生させました. あるいは、彼らは正しい軌道に乗っていないのかもしれません。私が言ったように、私はかなり混乱しています。

ありがとう。

4

2 に答える 2

1

NSArrayNSDates降順で並べ替える方法はいくつかあります。

あなたが使用することができますsortedArrayUsingDescriptors:

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"self" ascending:NO];
theDatesList = [theDatesList sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

しかし、私は個人的に好きsortedArrayUsingComparator:です:

theDatesList = [theDatesList sortedArrayUsingComparator:^NSComparisonResult(NSDate *date1, NSDate *date2){
    return [date2 compare:date1];
}];
于 2012-05-20T10:24:11.237 に答える
-2

monotouch.dialog に相当する客観的な C が存在します。これで、それは本当に簡単なはずです。

于 2012-05-20T08:48:15.753 に答える