web-dev-qa-db-fra.com

import Swift vs import Foundation

Question

Quelle est la différence entre import Swift et import Foundation?

Jusqu'à ce que je lise ce commentaire par Martin R , je ne savais même pas qu'il y avait un import Swift.

Lecture

Je n'ai pas pu trouver la documentation et faire une recherche Google n'a pas été très utile.

Ce que j'ai essayé

Le tester montre que import Swift ne donne aucune erreur de compilation, mais cela ne répond pas vraiment à ma question.

Si je devais deviner, je dirais que vous importez Swift pour Swift projets et que vous importez des projets Foundation for Objective-C ou peut-être pour Swift qui utilisent des classes Objective-C (comme NSString).

Tester cela dans l'aire de jeux:

import Foundation
import Swift

var str = "Hello, playground"
let str2: NSString = "hello"
let str3: String = "hello"

Commenter import Swift ne donne aucune erreur et str est du type String. Cependant, commentant import Foundation donne une erreur de "type non déclaré" pour NSString.

Ma question revisitée

Je serais assez heureux d'abandonner Foundation et d'utiliser simplement Swift. Ai-je donc raison d'importer simplement Swift tout le temps, sauf si j'ai spécifiquement besoin d'utiliser l'une des anciennes classes Objective-C?

30
Suragch

Oui, vous aurez seulement besoin de import Foundation si vous souhaitez accéder à NSObject ou à l'une de ses sous-classes. Foundation est le cadre qui introduit cette hiérarchie de classes. Cependant, il est fort probable que dans un projet, vous aurez besoin de plus que import Swift. Comme Rob l'a commenté, import UIKit est également une option intéressante.

Si vous ne l'avez pas déjà lu, Apple explique le framework Foundation ici .

22
Sidney

Si vous souhaitez travailler avec des chaînes, des dates, etc., vous devez importer Foundation.

Le framework Foundation fournit une couche de base de fonctionnalités pour les applications et les frameworks, y compris le stockage et la persistance des données, le traitement de texte, les calculs de date et d'heure, le tri et le filtrage, et la mise en réseau.

Si vous souhaitez travailler avec UITableViewController, UIAlertController, vous devez importer UIKit.

Si vous importez UIKit, vous n'avez pas besoin d'importer Foundation car il l'importe déjà dans les coulisses.

La bibliothèque standard Swift définit une couche de base de fonctionnalités pour l'écriture de programmes Swift, y compris:

Types de données fondamentaux, structures de données communes, fonctions globales telles que l'impression (: separator: terminator :) et abs ( :), protocoles, tels que Collection et Equatable ... etc.

Si vous importez Foundation, il n'est pas nécessaire d'importer Swift à nouveau car Foundation contient des références à Swift Standard Library par défaut).

Lorsque vous écrivez quelque chose qui n'est pas pour les applications iOS, comme par exemple une programmation serveur basée sur Vapor, vous devrez peut-être envisager d'importer Swift.

Voir: - https://developer.Apple.com/documentation/Swift/swift_standard_library/

Veuillez vous référer: - https://hasancan.tech.blog/2018/01/17/import-foundation-vs-uikit/

3
arango_86

import Foundation utilisé pour accéder à NSObject ou à l'une de ses sous-classes.NSObject signifie que nous pouvons étendre notre classe en utilisant Objective C fonctionnalités d'exécution.Mais importez UIKit ou importez Swift, qui est automatiquement générer pendant que nous créons notre projet xcode

0
kurupareshan