【发布时间】:2017-12-18 09:32:37
【问题描述】:
我必须在 Objective C 课程中确定星期几。 尝试使用此方法:
- (NSUInteger)ordinalityOfUnit:(NSCalendarUnit)smaller
inUnit:(NSCalendarUnit)larger
forDate:(NSDate *)date;
这是我的代码:
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
(int) [gregorian ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitWeekday forDate:[NSDate date]];
无论是哪一天,它总是返回 -1。即使我更改日期,或者循环一整周。 但是,使用这种方法,效果很好:
- (NSDateComponents *)components:(NSCalendarUnit)unitFlags
fromDate:(NSDate *)date;
到目前为止一切顺利。唯一的问题是:此方法已弃用(在 iOS 8.0 中首次弃用,所以很久以前)。 有点害怕使用过时的旧方法进行生产。有没有办法使(甚至不是非常)新方法起作用?
【问题讨论】:
-
developer.apple.com/documentation/foundation/nscalendar/… 我没有看到它被弃用。 iOS8 中可能被弃用的是
NSWeekdayCalendarUnitvsNSCalendarUnitWeekday。 -
另外,查看
ordinalityOfUnit:inUnit:forDate:的文档。它说在某些情况下返回NSNotFound(比如smaller>=larger? 因为在你的情况下它们是相等的),NSNotFound可以转换为-1从铸造NSUInteger到@987654334 @ -
Larme:你是对的。谢谢!这是一个简单的修复......
标签: ios objective-c nscalendar