【发布时间】:2016-04-14 15:29:44
【问题描述】:
如何将 .minute() 和 .hour() 转换为 Objective-C?
func nearestHour () -> Int {
let halfHour = NSDate.minuteInSeconds() * 30
var interval = self.timeIntervalSinceReferenceDate
if self.seconds() < 30 {
interval -= halfHour
} else {
interval += halfHour
}
let date = NSDate(timeIntervalSinceReferenceDate: interval)
return date.hour()
}
我试过这个:
- (int) nearestHour {
NSInteger halfHour = [NSDate minuteInSeconds].intValue * 30;
NSTimeInterval interval = [self timeIntervalSinceReferenceDate];
if ([self seconds] < 30) {
interval -= halfHour;
}
else {
interval += halfHour;
}
NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate: interval];
return [date hour];
}
我在这些行收到以下错误:
if ([self seconds] < 30) {
NSDate 没有可见的@interface 声明选择器秒数。
return [date hour];
NSDate 没有可见的@interface 声明选择器小时。
【问题讨论】:
-
查看
NSDate的文档。没有seconds或hour这样的方法。它们必须是 Swift 代码中的自定义函数。 -
Please do refer this link 这显示了您的转换的明确方式[也请参考此链接][1] [1]:stackoverflow.com/questions/1739383/…
-
我实际上已经看到了那个链接。而且我知道 swift 代码没有名为 hour() 或 seconds() 的自定义函数,这就是我感到惊讶的原因。这就是为什么我想回答我的问题。
-
@SridharG.K 这与这个问题无关。
-
@CodeOxO
NSDate上也没有minuteInSeconds方法,但您的代码正在调用这样的方法。它也必须是某种类别方法。
标签: objective-c swift nsdate hour seconds