1

私はデータロギングアプリケーションをプログラミングしています。ユーザーがを使用して入力した時間間隔を保存できる必要がありますCore Data。たとえば、ユーザーが7分23秒でタスクを完了した場合、ユーザーはに入力でき7:28NSTextFieldそれがデータの一部になります。

時間を保存するためにどのクラスを使用する必要がありますか?NSDateそれを行う正しい方法のようですが、時間間隔を保存していないようです。NSTimeIntervalクラスがあるようです。しかし、特に参考にしないので、使い方がわかりません。

また、この時間間隔がCore Data内のオブジェクトに格納されている場合、それらのアイテムを取得して並べ替えることができる必要があります(を使用してNSSortDescriptor)。最も短い時間間隔を記録したエントリを取得するため。これは、私がここで何をする必要があるかを理解するのに役立つ追加情報です。

4

2 に答える 2

1

ドキュメントから:NSDateオブジェクトは単一の時点を表します。

ユースケースからすると、ユーザーに相対時間を記録してから、どれが最小かで並べ替えることができるようにする必要があるように思われます。その場合、NSDateは適切なオプションではありません。最善の解決策は、時間間隔をNSUIntegerとして格納することです。ここで、整数は秒単位の値を表し、両端で適切な変換を実行します。

于 2012-06-25T03:09:21.387 に答える
1

ユーザーが 7:28 と入力した場合、これを秒数 (448 秒) に変換して NSUInteger に格納できますか? 個別の分と秒の値を処理する必要がないため、簡単に並べ替えることができます。

これが私があなたがすべきだと思うことです:

  • ユーザー入力用に 2 つのフィールドを用意します。1 つは分用、もう 1 つは秒用です。
  • 次のようなコードがあります。

    NSInteger totalTime1 = 0;

    totalTime += [minuteField.text integerValue]*60;

    totalTime += [secondField.text integerValue];

totalTime1Core Data を使用して保存します。時間を取得して並べ替えるには、次のようにします。

//Retrive times
NSArray *retrievedTimes = [NSArray arrayWithObjects: time1FromCoreDataAsNSNumber, time2FromCoreDataAsNSNumber, etc, nil];
NSArray *sortedRetrievedTimes = [retrievedTimes sortedArrayUsingSelector:@selector(compare:)];

//Now the array is sorted from lowest to highest
NSInteger lowestValue = [[sortedRetrievedTimes objectAtIndex:0] integerValue];

お役に立てれば!

于 2012-06-25T03:02:32.380 に答える