我不知道代码哪里出了问题: 但是错误说我的代码不可用: 请帮助我:
/// Swift4
///'range(of:in:for:)' is unavailable: use range(of:in:for:) instead
let weeks = NSCalendar.current.range(of: NSCalendar.Unit.weekOfMonth, in: NSCalendar.Unit.month, for: anotherClass() as Date)
答案 0 :(得分:1)
在Swift 3+中不要使用NSCalendar
。使用本地结构Calendar
。
并省略NSCalendar.Unit
。编译器可以推断类型
let weeks = Calendar.current.range(of: .weekOfMonth, in: .month, for: Date())
答案 1 :(得分:1)
range(of:in:for)
中有两个NSCalendar
。
一个是range(of: NSCalendar.Unit, in: NSCalendar.Unit, for: Date)
。
另一个是range(of: Calendar.Component, in: Calendar.Component, for: Date)
。
第一个在Swift 4中不可用。您需要使用第二个。不幸的是,Swift的约定在方法签名中省略了类型名称...
尝试一下:
let weeks = Calendar.current.range(of: Calendar.Component.weekOfMonth, in: Calendar.Component.month, for: anotherClass() as Date)
(如果您的anotherClass()
返回NSDate
,则最好将其更新为返回Date
。)
range(of: Calendar.Component, in: Calendar.Component, for: Date)
的结果类型是Range<Int>?
,而不是NSRange
。您可能需要使用weeks
修改代码。
答案 2 :(得分:0)
使用Calendar
代替NSCalendar
答案 3 :(得分:0)
尝试使用Calender类,因为NSCalender不适合快速版本。