web-dev-qa-db-ja.com

import Swift vs import Foundation

質問

import Swiftimport Foundationの違いは何ですか?

このコメント by Martin R を読むまで、import Swiftがあることすら知りませんでした。

読書

ドキュメントが見つかりませんでしたが、Google検索を実行してもあまり表示されませんでした。

試したこと

試してみると、import Swiftはコンパイルエラーを発生させないことがわかりますが、それでも私の質問には答えられません。

推測すると、Swift for Swiftプロジェクトと、Foundation for Objective-CプロジェクトまたはおそらくSwift Objective-Cクラスを使用するプロジェクト(NSStringなど)。

プレイグラウンドでこれをテストする:

import Foundation
import Swift

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

import Swiftをコメントアウトするとエラーは発生せず、strStringタイプです。ただし、import Foundationをコメントアウトすると、NSStringに対して「宣言されていないタイプ」エラーが発生します。

私の質問再訪

Foundationを放棄し、Swiftを使用するだけで十分です。したがって、古いObjective-Cクラスの1つを特に使用する必要がない限り、常にSwift=を常にインポートする権利がありますか?

30
Suragch

はい、必要なのはimport Foundation NSObjectまたはそのサブクラスの1つにアクセスする場合。 Foundationは、そのクラス階層をもたらすフレームワークです。ただし、プロジェクトではimport Swift。ロブがコメントしたように、import UIKitも素敵なオプションです。

まだ読んでいない場合は、AppleがFoundationフレームワークを説明しています here

22
Sidney

文字列、日付などを使用する場合は、Foundationをインポートする必要があります。

Foundationフレームワークは、データストレージと永続性、テキスト処理、日付と時刻の計算、並べ替えとフィルター、ネットワークなど、アプリとフレームワークの機能の基本層を提供します。

UITableViewController、UIAlertControllerを使用する場合は、UIKitをインポートする必要があります。

UIKitをインポートする場合、Backstageですでにインポートされているため、Foundationをインポートする必要はありません。

Swift=標準ライブラリは、Swiftプログラムを作成するための機能の基本層を定義します。

基本データ型、共通データ構造、print(:separator:terminator :)やabs(:)などのグローバル関数、CollectionおよびEquatable ...などのプロトコル

Foundationをインポートする場合は、Swiftをインポートする必要はありません。FoundationにはデフォルトでSwift標準ライブラリが含まれています。

iOSアプリ用ではないもの、たとえばVaporに基づいたサーバープログラミングなどを書いている場合、Swiftのインポートを検討する必要があるかもしれません。

参照: https://developer.Apple.com/documentation/Swift/swift_standard_library/

参照してください:- https://hasancan.tech.blog/2018/01/17/import-foundation-vs-uikit/

3
arango_86

import Foundation NSObjectまたはそのサブクラスの1つにアクセスするために使用されます。NSObjectはObjective Cランタイム機能を使用してクラスを拡張できますが、UIKitのインポートまたはSwiftのインポートは自動的に行われますXcodeプロジェクトを作成しながら生成する

0
kurupareshan