【发布时间】:2016-02-18 15:55:04
【问题描述】:
您好,我对来自NSCalendar 的rangeOfUnit() 方法有疑问。我得到 NSNotFound 值,而我期望值在 范围内(一个月中的周数)。真正让我担心的是它依赖于平台(在 iOS7 上不起作用)。在我调查CVCalendar 组件时发现了该错误。我在装有 iOS 7.1.1 的 iPhone 4S 上设置了英语语言和公历。
// Range of the month.
let range = calendar.rangeOfUnit(NSCalendarUnit.WeekOfMonth, inUnit: NSCalendarUnit.Month, forDate: date)
// Should return values in range <4,6>
print("Range \(range)")
let range2 = calendar.rangeOfUnit(NSCalendarUnit.Month, inUnit: NSCalendarUnit.WeekOfMonth, forDate: date)
// Invalid range. No week contains no months.
print("Range \(range2)")
let range3 = calendar.rangeOfUnit(NSCalendarUnit.Weekday, inUnit: NSCalendarUnit.Month, forDate: date)
print("Range \(range3)")
控制台打印日期:
po date
2015-11-17 10:05:39 +0000
iOS9 模拟器和其他非 iOS7 设备上的控制台输出:
Range (1,5)
Range (2147483647,2147483647)
Range (1,7)
iOS7 设备上的控制台输出:
Range (2147483647,2147483647)
Range (2147483647,2147483647)
Range (1,7)
【问题讨论】:
-
什么是 UICalendar?你是说NSCalendar吗? – 第一个和最后一个范围有什么区别?
-
对不起,我的意思是来自 Foundation 框架的
NSCalendar。