1

我正在编写一个数据记录应用程序。我需要能够存储用户使用输入的时间间隔Core Data。例如,如果用户在 7 分 23 秒内完成了一项任务,他/她可以输入7:28NSTextField和”,这将成为数据的一部分。

我应该使用什么类来存储时间?NSDate似乎是正确的做法,但它似乎没有存储时间间隔。我看到有一个NSTimeInterval类。但是,没有特别的参考,我不知道如何使用它。

此外,当这个时间间隔存储在 Core Data 中的对象中时,我需要能够检索这些项目并对它们进行排序(使用NSSortDescriptor);为了检索记录最低时间间隔的条目。这只是帮助弄清楚我需要在这里做什么的附加信息。

4

2 回答 2

1

如果用户输入 7:28,您能否将其转换为秒(448 秒)并将其存储在 NSUInteger 中?这将使排序变得容易,因为您不必处理单独的分钟和秒值。

这是我认为你应该做的:

  • 有两个字段供用户输入:一个用于分钟,一个用于秒。
  • 有一些这样的代码:

    NSInteger totalTime1 = 0;

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

    totalTime += [secondField.text integerValue];

现在totalTime1使用 Core 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 回答
1

来自文档:NSDate对象代表一个时间点。

从您的用例看来,您希望用户记录一个相对时间,然后能够按哪个时间最小进行排序。在这种情况下,NSDate 不是一个好的选择。最好的解决方案是将时间间隔存储为 NSUInteger,其中整数表示以秒为单位的值,然后在任一端进行适当的转换。

于 2012-06-25T03:09:21.387 回答