35 votes

Swift 3: Date vs NSDate?

Quelle est la différence entre les classes NS et non NS? En particulier NSDate vs Date ? Est-ce que NS représente un type d’emballage autour de la fonctionnalité de base autre que NS ?

55voto

Martin R Points 105727

Swift 3 introduit quelques nouvelles de superposition des types de valeur pour les Fondation de la classe de types, tels que l' Date pour NSDate, Datapour NSData et un peu plus. La liste complète et les détails peuvent être trouvés dans

Certaines des raisons qui ont été

  • Fournir une valeur sémantique,
  • let et var au lieu de changeant et immuable variantes,
  • plus "Swifty" Api.

Les nouveaux types d'incrustation doit fournir toutes les fonctionnalités que le correspondant de la Fondation de type a, mais si nécessaire, vous pouvez toujours fonte d'un type à l'autre.

Lorsque les bases sont des Api importés dans Swift, les types sont reliés automatiquement.

À l'égard Date et NSDate: Date est une valeur de type et peut être une constante ou une variable:

var date = Date()
date += 10.0 // Add 10 seconds

alors qu' NSDate est un type de référence et immuable. Aussi Date est Comparable

let date1 = Date()
let date2 = Date()

if date1 < date2 { }

alors qu' NSDates ne peut être comparé avec .compare().

Remarque: Pour ces "types d'incrustation", le type de valeur (struct) comme l' Date et de sa Fondation de contrepartie (de classe) comme NSDate sont de types différents, et les deux peuvent être utilisés à partir de Swift. Il ne doit pas être confondu avec

où l' NS préfixe a tout simplement été abandonnée pour certains de la Fondation les classes, par exemple, NSBundle est renommé pour Bundle pour Swift 3.

2voto

mbachm Points 319

NS les classes sont en Objective-C classes. Comme Objective-C est le plus vieux langage de programmation pour iOS et MacOS applications, Swift vous permet d'utiliser ces classes structs dans votre code. Ainsi, vous pouvez migrer les applications d'Objective-C, Swift si vous le souhaitez.

Le non-NS classes ou des structures sont la Swift équivalents de de la la NS classes ou des structures. Vous pouvez lire plus sur ce sujet ici ou ici.

Mais attention: Comme Objective-C et Swift ne sont différents langages de programmation, il peut arriver que NS et non-NS les cours ne sont pas entièrement un travail de la même façon.

1voto

aremvee Points 121

Outre les réponses données ci-dessus, dans un sens littéral plus superficiel, NS était un préfixe donné à tout ce qui se passait à l'époque de NextStep, avant que Steve Jobs ne soit rappelé à Apple et faisait donc naturellement partie de la syntaxe d'Objective-C.

Avance rapide pour le développement de Swift, ils avaient besoin d’un point de différence évidente, abd aurait pu être un préfixe CL (pour Chris Lattner), mais a évidemment choisi de ne pas avoir de préfixe

0voto

Kukoo Ch Points 11

La différence entre NS non NS classes, c'est que le NS les classes sont de type référence, alors que l'autre NS les classes sont de type valeur . Dans swift 3 , Apple a introduit des classes de base comme NSDate et re-nommé à Jour, mais depuis swift est basée sur la valeur et les types plutôt que le type de référence, par conséquent, la Date est un type de valeur. Par exemple:

let date = NSDate() //1
date.dateByAddingTimeInterval(1000) //2 

2 . Admises en tant que bien que la date est constante, mais la mutabilité dépend de la classe plutôt que de laisser vs variable.

alors que

let date = Date() //3
date.dateByAddingTimeInterval(1000) //4

4. n'est pas autorisé non autorisé et le résultat serait une Erreur que de laisser rend 'date' une constante avec " let " comme date Date() de type qui est un type valeur.

-2voto

Stefan DeClerck Points 663

NSDate et Date ne sont pas la même chose. Les classes NS (étape suivante) sont pour le moment utilisées uniquement dans Objective-C, donc dans Objective-C pour représenter une variable de date NSDate.

En ce qui concerne spécifiquement Swift 3.0, la dernière version de Swift Apple a totalement éliminé la nécessité d’utiliser le préfixe NS pour tous les types. Donc, dans Swift trois, nous utilisons maintenant Date au lieu de NSDate. pour rendre votre code plus propre

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X