当前位置: 首页 > 面试题库 >

NSDateComponents语法有区别吗?

水铭晨
2023-03-14
问题内容

我一直在使用Swift和Xcode 6.3.2开发时钟应用程序,以下代码可以构建并运行良好。

// Get current time
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitSecond | .CalendarUnitNanosecond, fromDate: date)
let hour = components.hour % 12
let minute = components.minute
let second = components.second
let nanosecond = components.nanosecond

但是,当我在Xcode 7.0 beta中加载相同的项目并且不做任何更改时,在calendar.components行上出现错误。

Could not find member 'CalendarUnitHour'

我看了看文档,所有NSCalendarUnit常量都已弃用(在iOS 8.0中它说),但是component方法的方法描述仍然说要使用它们。

我使用了其他NSCalendarUnit自动完成值,但是没有一个能产生有效的代码,而且我在网上找不到任何最新示例,也许是因为这是全新的。

有人知道新的正确方法吗?


问题答案:

迅捷2

NSCalendarUnit名称在斯威夫特2改变。

另外,现在我们必须在OptionSet中传递这些参数,如下所示:

let components = calendar.components([.Hour, .Minute, .Second, .Nanosecond], fromDate: date)

迅捷3

根据Swift API设计指南,许多事情已经改变。

更新的语法:

let date = Date()
let calendar = Calendar.current()
let components = calendar.components([.hour, .minute, .second, .nanosecond], from: date)

斯威夫特4

Calendar.current现在是一个属性,并.components已重命名为.dateComponents。否则,它与Swift
3中的相同。

let calendar = Calendar.current
let components = calendar.dateComponents([.hour, .minute, .second, .nanosecond], from: date)


 类似资料:
  • 我把 items 换成 ccc 为什么就提示有问题?直接就挂了?

  • 我最近开始学习静态编程语言,我注意到静态编程语言的for循环语法不同于传统的for循环语法,对我来说有点困惑...我试图在谷歌上搜索它,但没有得到我的答案。 如何复制下面的Java for循环?

  • 问题内容: 请说明对象一和对象二的区别: 欧宝级扩展了轿车。 问题答案: 您可以重新分配给的其他某个子类的对象: 但是您不能那样重新分配,因为它仅限于。 如果是在类中定义的方法,而不是在类中定义的方法,则如果这样做,编译器将给您一个错误: 但这没关系: 由于它知道仅限于,因此它知道该方法将存在。 通常,您希望将变量声明为尽可能 广泛的 类型。也就是说,如果您仅要使用中的方法,则请使用type声明它

  • 与...的循环中,该循环迭代每个键()并迭代键,用于...的值不迭代属性的值,即。为什么是那样? 在这里,我为...控制台循环的。它应该记录但它记录。为什么? 示例链接

  • 问题内容: 在阅读了有关该主题的一些资料之后,我仍然不确定编译语言和解释语言之间的区别。有人告诉我这是Java和JavaScript之间的区别之一。有人能帮我理解吗? 问题答案: 编译语言和解释语言之间有什么区别? 区别 不 在于语言。它在 执行中 。 从我的系统中得到了答案,这是一个答案: 在编译的实现中,原始程序被转换为本地机器指令,这些指令直接由硬件执行。 在解释的实现中,原始程序被翻译成其

  • 问题内容: 有人可以在OOP上下文中提供方法与功能的简单说明吗? 问题答案: 甲函数是一段代码由名字叫做。可以传递数据以对其进行操作(即参数),还可以选择返回数据(返回值)。传递给函数的所有数据都被显式传递。 甲方法是一段代码,由与对象相关联的名称叫。在大多数方面,它与功能相同,但有两个主要区别: 方法被隐式传递给调用该方法的对象。 方法能够对类中包含的数据进行操作(记住,对象是类的实例-类是定义