我正在编写数据记录应用程序。我需要能够使用Core Data
存储用户输入的时间间隔。例如,如果用户在7分钟和23秒内完成任务,他/她可以在7:28
中输入NSTextField
,这将是数据的一部分。
我应该用什么课来存储时间? NSDate
似乎是正确的做法,但它似乎没有存储时间间隔。我看到有一个NSTimeInterval
类。但是,没有特别的参考,我不知道如何使用它。
此外,当此时间间隔存储在Core Data中的对象中时,我需要能够检索这些项并对它们进行排序(使用NSSortDescriptor
);为了检索记录最低时间间隔的条目。这只是附加信息,以帮助弄清楚我需要在这做什么。
答案 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,其中整数表示以秒为单位的值,然后在两端进行适当的转换。