如何在Realm swift中存储时间间隔(小时:分钟:秒)

时间:2018-01-25 13:43:11

标签: ios swift realm

我正在创建一个锻炼计时器应用程序。 我想存储只是创建的计时器对象的小时:分钟:秒。

我首先创建了一个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可能不知道如何处理元组。

所以我的问题是。什么是存储用户选择的小时,分​​钟和秒时间间隔的最佳方式,而不必存储附加了无用日期的整个日期对象。

当然,我还需要能够从后备存储中读取该时间间隔,以便将其应用于计时器。

编辑: 我想我也可以将它存储为秒的整数值,然后解析导致小时,分钟和秒

1 个答案:

答案 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.