在数据记录中使用时间间隔?

时间:2012-06-25 02:25:22

标签: objective-c macos core-data

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

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

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

2 个答案:

答案 0 :(得分:1)

如果用户输入7:28,您可以将其转换为秒(448秒)并将其存储在NSUInteger中吗?这样可以轻松排序,因为您不必处理单独的分钟和秒值。

以下是我认为你应该做的事情:

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

    NSInteger totalTime1 = 0;

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

    totalTime += [secondField.text integerValue];

现在使用Core Data存储totalTime1。要检索时间并对它们进行排序,请执行以下操作:

//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];

希望这有帮助!

答案 1 :(得分:1)

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

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