SwiftのFoundationとは?

2024/03/15に公開

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)")

タイマーを使ったロジック

https://developer.apple.com/documentation/foundation/timer
ある一定の時間が経過するとタイマーが作動し、指定されたメッセージをターゲット・オブジェクトに送信する。

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