2017-02-06 1 views
1

я имел этот код в Swift 2, теперь он имеет ошибку в Swift 3:'init' относится к типу; использование 'типа (из: ...)', чтобы инициализировать новый объект

Ошибка:

'init' is a member of the type; use 'type(of: ...)' to initialize a new object of the same dynamic type

extension Date 
{ 

    init(dateString:String) { 
     let dateStringFormatter = DateFormatter() 
     dateStringFormatter.dateFormat = "yyyy-MM-dd" 
     dateStringFormatter.locale = Locale(identifier: "en_US_POSIX") 
     let d = dateStringFormatter.date(from: dateString)! 

     // error is here : 'init' is a member of the type; use 'type(of: ...)' to initialize a new object of the same dynamic type 
     (self as NSDate).init(timeInterval:0, since:d) } 
} 
+2

Что такое '(self as NSDate)'? Тип 'Date' имеет собственный' init' с теми же параметрами, почему бы не использовать его вместо тщеславия типа? Кроме того, 'init' - это метод уровня класса, а не уровень экземпляра - вот откуда исходит ваша ошибка. – user28434

+0

правый, фиксированный, спасибо! – AVEbrahimi

ответ

0

Пробег super.init(timeInterval:0, since:d)

+0

ОШИБКА: 'супер' не может быть использована за пределами членов класса 'code' Даты расширения { инициализации (jsonDate: String)? { пусть префикс = "/ Date (" пусть суффикс = ") /" если jsonDate .hasPrefix (prefix) && jsonDate.hasSuffix (suffix) { let from = jsonDate.characters.index (jsonDate.startIndex, offsetBy: prefix.characters.count) let to = jsonDate.characters.index (jsonDate.endIndex, offsetBy : -suffix.characters.count) охранник пусть миллисекунды = Double (jsonDate [из .. <к]) еще { возврат ноль } super.init (timeIntervalSince1970: миллисекунды/1000.0) } 'code' –

Смежные вопросы