swift - 是否可以扩展 Calendar.Identifier 来创建自定义日历?

标签 swift calendar nscalendar

我想快速实现 DDate(Discordian Date——Hail Eris!)日历,我想知道是否有办法扩展 Calendar.Identifer 枚举以包含新日历?

我可以用下面的代码扩展 NSCalendar.Identifier,但是似乎没有办法对 Calendar.Identifier 做同样的事情:

extension NSCalendar.Identifier {
  static let discordian = NSCalendar.Identifier(rawValue: "Discordian")
}

NSCalendar 桥接到 Calendar,但是当我尝试使用 Calendar(identifier: Calendar.Identifier) init 方法实例化一个新的 Calendar 对象时,新标识符没有出现在标识符列表中.有办法做到这一点吗?

最佳答案

Swift 中的 Calendar 类型由 NSCalendar 支持,即 Toll-Free Bridged往返CFCalendar .

CFCalendar 的文档中明确指出:

There is currently no API for defining your own calendars.

Swift Calendar 也不提供此类 API。


即使 Calendar 有这样的 API,您的自定义日历也无法只提供其标识符。

您需要实现为您自己的新标识符定制的 Calendar 的许多功能,并将实现绑定(bind)到标识符。

同样,CalendarNSCalendarCFCalendar 中都没有这样的 API。

所以,没办法,你不能那样做。

关于swift - 是否可以扩展 Calendar.Identifier 来创建自定义日历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52500727/

相关文章:

ios - 如何从 swift 文件调用用 Objective C 编写的 Web 服务

iOS:使 Tapku 日历库平铺网格大小始终为 6x6

java - 将字符串转换为日历时出错?

ios - 在线文档中未包含 NSCalendar 的某些方法。这些可以安全使用吗?

ios - 不同时区的显着时间变化

swift - 执行 segue 丢失导航 Controller

ios - 如何在 AsyncDisplayKit 中使用 scrollView 函数

php - MySQL 查询日历的事件

swift - 为什么在 Swift Playground 中执行的结果与在应用程序中执行的结果不同?

ios - 如何在 swift 4.2 中将 UIView 变成圆形?