我正在创建一个锻炼计时器应用程序。 我想存储只是创建的计时器对象的小时:分钟:秒。
我首先创建了一个Time对象:
class Time: Object {
@objc dynamic var hour: Int = 0
@objc dynamic var minute: Int = 0
@objc dynamic var second: Int = 0
}
我正在使用此对象来表示时间间隔。我不喜欢这种方法是我得到一个单独的时间表,包括小时,分钟和第二列。
然后我想知道是否可以存储元组(Int,Int,Int)来表示我的时间间隔。但是我收到一个警告,即元组类型无法在object-c中表示。我还认为Realm可能不知道如何处理元组。
所以我的问题是。什么是存储用户选择的小时,分钟和秒时间间隔的最佳方式,而不必存储附加了无用日期的整个日期对象。
当然,我还需要能够从后备存储中读取该时间间隔,以便将其应用于计时器。
编辑: 我想我也可以将它存储为秒的整数值,然后解析导致小时,分钟和秒
答案 0 :(得分:1)
Unless there are other prerequisites not described in the question, just use Swift's TimeInterval
(typealias for Double
, which is supported by Realm). I expect this is a property on some other modeled object (otherwise you're just storing arbitrary numbers) - let's say it's on a Workout
object.
class Workout: Object {
@objc dynamic var interval: TimeInterval = 0
}
If you want to pull out the hour/minute/second of the time interval, the quick and dirty solution is to extension Double { }
with utility functions like func inSeconds()
. But the better solution is to use DateComponentsFormatter, which can take your TimeInterval
as input and spit those things out while handling far more edge cases for you.