SwiftのFoundationとは?
Foundation
Access essential data types, collections, and operating-system services to define the base layer of functionality for your app.
ファウンデーション
必須データ型、コレクション、オペレーティング・システム・サービスにアクセスし、アプリの機能のベース・レイヤーを定義します。
Overview
The Foundation framework provides a base layer of functionality for apps and frameworks, including data storage and persistence, text processing, date and time calculations, sorting and filtering, and networking. The classes, protocols, and data types defined by Foundation are used throughout the macOS, iOS, watchOS, and tvOS SDKs.
Foundationフレームワークは、データストレージと永続性、テキスト処理、日付と時刻の計算、ソートとフィルタリング、ネットワーキングを含む、アプリとフレームワークの機能のベースレイヤーを提供します。Foundationによって定義されたクラス、プロトコル、データタイプは、macOS、iOS、watchOS、tvOS SDK全体で使用されています。
Example
よくある使用例だと、時間を扱う機能を使うときに、import Foundation
と書くことがあります。
import UIKit
import Foundation
var currentDate = Date()// 現在時刻を取得
var nextDay = Date(timeIntervalSinceNow: 24 * 60 * 60)// 明日の同じ時間取得
var tenDays = Date(timeInterval: -10 * 24 * 3600, since: nextDay)// 10日前の同じ時間を取得
print(currentDate)
print(nextDay)
print(tenDays)
日本時間を扱ってみる。毎回実行結果を変えないといけないので、修正してます。
import UIKit
import Foundation
let dateFormatter = DateFormatter()
let currentDate = Date()
dateFormatter.locale = Locale(identifier: "ja_JP")
//dateFormatter.dateStyle = .short// 日本語: 2024/03/15
//dateFormatter.dateStyle = .medium// 日本語: 2024/03/15
//dateFormatter.dateStyle = .full // 日本語: 2024年3月15日 金曜日
//dateFormatter.dateStyle = .long // 日本語: 2024年3月15日
dateFormatter.dateStyle = .none // 日本語:
let japanDate = dateFormatter.string(from: currentDate)
print("日本語: \(japanDate)")
タイマーを使ったロジック
ある一定の時間が経過するとタイマーが作動し、指定されたメッセージをターゲット・オブジェクトに送信する。
import UIKit
import Foundation
print("Wait 5 seconds...")
Timer.scheduledTimer(withTimeInterval: 5.0, repeats: false) {
(timer) in
print("5秒後に表示")
}
10秒数えるタイマーを作ることもできる。
import UIKit
import Foundation
var counter = 0
func startTimer() {
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { (timeRef) in
report(timer: timeRef)
}
}
func report(timer: Timer) {
print("\(counter) times")
counter += 1
if counter > 10 {
print("Finished")
timer.invalidate()
}
}
startTimer()
まとめ
Foundationフレームワークは、macOS、iOS、watchOS、tvOSなどのAppleのプラットフォームで広く使用されている基本的なフレームワークです。Foundationフレームワークには、文字列処理、日付と時刻の操作、ファイル入出力、ネットワーク通信、データのシリアライゼーションなど、多くの基本的な機能が含まれています。
import Foundation をSwiftファイルの先頭に記述することで、Foundationフレームワークのクラスや関数、プロトコルなどにアクセスすることができます。例えば、DateやStringなどのクラス、URLSessionやFileManagerなどのAPIを利用するためには、import Foundationが必要です。
ただし、FoundationフレームワークはSwiftの標準ライブラリであるため、通常は追加のインポートが不要です。Swiftファイルを作成するときに、自動的にFoundationがインポートされるようになっています。ですが、例外的な場合や、追加のFoundationの機能を利用する場合には、明示的に import Foundation を記述する必要があります。
Discussion