'range(of:in:for :)'不可用:请改用range(of:in:for :)

时间:2018-07-21 11:04:41

标签: ios swift xcode swift4

我不知道代码哪里出了问题: 但是错误说我的代码不可用: 请帮助我:

/// 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) 

4 个答案:

答案 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不适合快速版本。