Im siguiente junto con la Bloque.io Swiftris tutorial donde inicializar una fecha por:

lastTick = NSDate.date()

Que provoca un error de compilación:

'date()' is unavailable: use object construction 'NSDate()'

Que debe ser igual a:

NSDate *lastTick = [NSDate date];

(desde el NSDate referencia)

Hizo Apple cambio el Swift de la interfaz para NSDate, ya que he visto otros ejemplos que utilizan NSDate.date?

Es sólo NSDate o no se puede llamar a los métodos del tipo para cualquier Objetivo-C Api?

  • En Objective-C, [NSDate date] simplemente llama [[NSDate alloc] init]. Por lo tanto, usted no necesita llamar NSDate.date() en Swift. Simplemente llamando a NSDate() inicializará un objeto date con la fecha actual.
  • ¿Por qué eliminar tu respuesta? Yo estaba a punto de aceptar.
  • Bueno, pensé que se aplica más como un comentario, pero al parecer era suficiente, ya que la respuesta… se Han deshecho de él, usted puede votar por lo menos, si no la aceptan… 😀
  • ¿confundido NSDate.fecha() en lugar de NSDate.init() ?
  • No, yo estaba siguiendo un tutorial que utiliza .fecha. Lo dice muy claramente en la pregunta.
InformationsquelleAutor max | 2014-10-29

4 Comentarios

  1. 78

    [NSDate date] es un método de fábrica para la construcción de un NSDate objeto.

    Si usted ha leído la guía «el Uso de Swift con Cocoa y Objective-C», hay una sección en la interacción con Objective-C api:

    De la coherencia y la simplicidad, Objective-C métodos de fábrica se correlacionan con la conveniencia inicializadores en Swift. Esta asignación permite que puedan ser utilizados con la misma conciso, claro sintaxis como inicializadores.»

    Extracto De: Apple Inc. «Mediante el uso de Swift con Cocoa y Objective-C.» iBooks. https://itun.es/gb/1u3-0.l

    Por lo que el método de fábrica:

    [NSDate date]

    se convierte en un inicializador en Swift

    NSDate()

    No sólo NSDate donde se encuentra este patrón, pero en otras Cacao de la API con métodos de fábrica.

    • No hay duda de que Apple no suministro de [NSDate data] en Objective-C, ya sea si la clase se aplicaron de nuevo; ARC significa que hay poca conveniencia extra en simple alloc] init] autorelease];estilo de métodos de fábrica.
  2. 11

    Parece que NSDate() es una nueva sintaxis. Previamente, NSDate.date() trabajado,

    pero ahora usted debe utilizar NSDate()

    • En realidad NSDate.date() me da un error del compilador.
    • Sí, la vieja sintaxis no más compatibles
    • su fraseo mal es engañosa. Si dice que «anteriormente, NSDate.date() trabajado», entonces no hay que escribir «a principios de NSDate.date() obras», porque significan cosas completamente diferentes.
    • Gracias, yo no tan bien en inglés 🙂
    • Esto no responde a mi pregunta, ya sea, yo ya sabía que yo debería usar NSDate() de la mensaje de error en mi pregunta (no soy un idiota). Mi pregunta era acerca de por qué el Swift de la interfaz es diferente de Obj.-C
    • Creo que Apple decida cambiar de sintaxis para más intuitiva y corto. [NSDate fecha] y NSDate() se ve bien, pero NSDate.fecha() es peor.

  3. 8

    En Objective-C, [NSDate date] simplemente llama [[NSDate alloc] init]. Por lo tanto, usted no necesita llamar NSDate.date() en Swift. Simplemente llamando a NSDate() inicializará un objeto date con la fecha actual.

  4. 6

    Hizo Apple cambio el Swift de la interfaz para NSDate?

    Sí, lo hicieron. Para mí, el compilador dice:

    De la fundación.NSDate:3:26: nota: fecha de()’ ha sido explícitamente marcado no está disponible aquí:

    @objc(date) class func date() -> Self!

    Por lo que es explícitamente marcado no está disponible para Swift. Esto significa que ha sido oficialmente obsoleto.

    • ¿Hay alguna opción de configuración de Xcode para obtener la depreciación mensajes como este?
    • lo siento, no entiendo a qué se refiere a — los errores de compilación se muestran en Xcode por defecto (por lo que yo sé, de todos modos… yo no uso de Xcode.)
    • Yo sólo llegar 'date()' is unavailable: use object construction 'NSDate()' en Xcode. Lo que compilador usas?
    • Yo uso la misma Swift compilador que se incluye con Xcode (puesto que no hay otros compiladores para Swift). Ejecuta utilizando xcrun swift.
    • Tal vez usted no está usando la misma versión de Xcode. Apple ha cambiado esto en 6.1.
    • href=»https://imgur.com/3IWyk1h» >yo uso 6.1.

Dejar respuesta

Please enter your comment!
Please enter your name here