目次
Xcode の新機能

  • ようこそ Swift へ
  • Swift について
  • バージョン互換性
  • Swift のツアー
  • 単純な値
    制御フロー
    関数とクロージャ
    オブジェクトとクラス
    列挙型と構造体
    プロトコルと拡張機能
    エラー処理
    汎用(ジェネリック)

  • Swift 言語のガイド
  • Swift の基本
    定数と変数
    定数と変数の宣言
    型注釈
    定数と変数の命名
    定数と変数の印刷
    コメント
    セミコロン
    整数
    整数の境界
    Int
    UInt
    浮動小数点数
    安全な型と型推論
    数値リテラル
    数値型変換
    整数変換
    整数と浮動小数点間の変換
    型エイリアス
    ブール型
    タプル
    Optionals
    nil
    Optional の結合
    Fallback 値の提供
    強制開封
    暗黙に開封された Optionals
    エラー処理
    アサーション(断言)と前提条件
    アサーションを使用したデバッグ
    前提条件の実施

  • 基本演算子
  • 専門用語
    代入演算子
    算術演算子
    剰余演算子
    単項マイナス演算子
    単項プラス演算子
    複合代入演算子
    比較演算子
    三項条件演算子
    Nil 合体演算子
    範囲演算子
    閉鎖範囲演算子
    半開放範囲演算子
    片方の範囲
    論理演算子
    論理 NOT 演算子
    論理 AND 演算子
    論理 OR 演算子
    論理演算子の組み合わせ
    明示的な括弧

  • 文字列と文字
  • 文字列リテラル
    複数行の文字列リテラル
    文字列リテラル内の特殊文字
    拡張した文字列の区切り文字
    空の文字列の初期化
    文字列の可変性
    文字列は値型
    文字を使った作業
    文字列と文字を連結
    文字列補間
    ユニコード(Unicode)
    Unicode スカラー値
    拡張書記クラスタ
    文字を数える
    文字列へのアクセスと変更
    文字列のインデックス
    挿入と削除
    部分文字列
    文字列の比較
    文字列と文字の等価性
    接頭辞と接尾辞の等価性
    文字列の Unicode 表現
    UTF-8 表現
    UTF-16 表現
    Unicode のスカラー表現

  • コレクション型
  • コレクションの可変性
    配列
    配列型省略構文
    空の配列の作成
    デフォルト値を持つ配列の作成
    2つの配列を共に加えて一つの配列に
    配列リテラルでの配列の作成
    配列へのアクセスと変更
    配列の繰り返し処理
    Set
    Set 型のハッシュ値
    Set 型の構文
    空の Set の作成と初期化
    配列リテラルで Set の作成
    Set へのアクセスと変更
    Set を反復処理
    Set 操作の実行
    基本的な Set の操作
    Set の身分と等価性
    Dictionary (辞書)
    Dictionary 型の省略型構文
    空の Dictionary を作成
    Dictionary リテラルで Dictionary の作成
    Dictionary へのアクセスと変更
    Dictionary を繰り返し処理

  • フロー制御
  • For-In ループ
    While ループ
    While
    Repeat-While
    条件文
    if 文
    Switch
    暗黙の Fallthrough はなし
    範囲の一致
    タプル(Tuples)
    値の結合
    Where
    複合した case
    制御転送文
    Continue
    Break
    ループ文内の Break
    Switch 文内の Break
    Fallthrough
    ラベル付きの文
    早期終了
    遅延したアクション
    API 利用可能性の確認

  • 関数(Functions)
  • 関数の定義と呼び出し
    関数のパラメータと戻り値
    パラメータなしの関数
    複数パラメータを持つ関数
    戻り値なしの関数
    複数の戻り値を持つ関数
    optional のタプル型の戻り値
    暗黙の戻り値を持つ関数
    関数引数のラベルとパラメータ名
    引数のラベルの指定
    引数ラベルの省略
    デフォルトのパラメータ値
    可変引数パラメータ
    In-Out パラメータ
    関数型
    関数型の使用
    パラメータ型としての関数型
    戻り値の型としての関数型
    入れ子になった関数

  • クロージャ
  • クロージャ式
    ソートされたメソッド
    クロージャ式の構文
    文脈から型を推論
    単一式クロージャからの暗黙的戻り値
    引数名の省略
    演算子メソッド
    後続クロージャ
    値のキャプチャ
    クロージャは参照型
    クロージャのエスケープ
    オートクロージャ

  • 列挙型
  • 列挙型の構文
    Switch 文で列挙型の値と一致
    列挙型 case の繰り返し処理
    関連する値
    生の値
    暗黙に割り当てられた生の値
    生の値からの初期化
    再帰的な列挙型

  • 構造体とクラス
  • 構造体とクラスを比較
    定義の構文
    構造体とクラスのインスタンス
    プロパティにアクセス
    構造体型のためのメンバ化イニシャライザ
    構造体と列挙型は値型
    クラスは参照型
    ID 演算子
    ポインタ

  • プロパティ
  • 格納されたプロパティ
    定数構造体インスタンスの格納プロパティ
    遅延した格納されたプロパティ
    格納されたプロパティとインスタンス変数
    計算されたプロパティ
    セッタ宣言の省略形
    ゲッタ宣言の省略形
    読み取り専用の計算されたプロパティ
    プロパティ監視者
    プロパティラッパー
    ラップされたプロパティの初期値の設定
    プロパティラッパーからの値の投影
    グローバルとローカルの変数
    型プロパティ
    型プロパティの構文
    型プロパティの照会と設定

  • メソッド
  • インスタンスメソッド
    self プロパティ
    インスタンスメソッド内から値型を変更
    変異メソッド内で self に代入
    型メソッド

  • サブスクリプト
  • サブスクリプトの構文
    サブスクリプトの使用法
    サブスクリプトのオプション
    型サブスクリプト

  • 継承
  • 基本クラスの定義
    サブクラス化
    オーバーライド(上書き)
    スーパークラスメソッド、プロパティ、サブスクリプトへのアクセス
    オーバーライドするメソッド
    オーバーライドするプロパティ
    プロパティのゲッタとセッタのオーバーライド
    プロパティ監視者のオーバーライド
    オーバーライドの防止

  • 初期化
  • 格納されたプロパティの初期値を設定
    イニシャライザ
    デフォルトのプロパティ値
    初期化のカスタマイズ
    初期化パラメータ
    パラメータ名と引数ラベル
    引数ラベルのないイニシャライザのパラメータ
    Optional のプロパティ型
    初期化中に定数プロパティへの代入
    デフォルトのイニシャライザ
    構造体型のためのメンバ化イニシャライザ
    値型のイニシャライザデリゲート
    クラスの継承と初期化
    指定イニシャライザとコンビニエンスイニシャライザ
    指定とコンビニエンスイニシャライザの構文
    クラス型のイニシャライザデリゲート
    二相の初期化
    イニシャライザ継承とオーバーライド
    自動イニシャライザの継承
    指定とコンビニエンスイニシャライザの実際
    失敗可能イニシャライザ
    列挙型のための失敗可能イニシャライザ
    生の値を持つ列挙型のための失敗可能イニシャライザ
    初期化失敗の伝播
    失敗可能イニシャライザのオーバーライド
    init! の失敗可能イニシャライザ
    必須イニシャライザ
    クロージャや関数でのデフォルトのプロパティ値設定

  • デイニシャライザ
  • デイニシャライザはどのように働くか
    作動中のデイニシャライザ

  • Optional の連鎖
  • 強制開封の代替としての Optional の連鎖
    Optional の連鎖のモデルクラスの定義
    Optional の連鎖でのプロパティへのアクセス
    Optional の連鎖を通じてメソッドを呼び出す
    Optional の連鎖を通じてサブスクリプトへのアクセス
    Optional 型のサブスクリプトにアクセス
    連鎖の複数レベルのリンク
    optional の戻り値を持つメソッドでの連鎖

  • エラー処理
  • エラーの表現と Throw
    エラーの処理
    throw する関数でのエラーの伝播
    Do-Catch を使用したエラー処理
    エラー をOptional の値に変換
    エラー伝播を無効に
    エラーの型の指定
    クリーンアップアクションの指定

  • 同時実行
  • 非同期関数の定義と呼び出し
    非同期シーケンス
    並列での非同期関数の呼び出し
    タスクとタスクグループ
    タスクのキャンセル
    構造化されていない同時実行
    アクター
    Sendable な型

  • マクロ
  • 独立したマクロ
    付属したマクロ
    マクロ宣言
    マクロの展開
    マクロの実装
    マクロの開発とデバッグ

  • 型キャスト
  • 型キャストのためのクラス階層の定義
    型のチェック
    ダウンキャスト
    Any と AnyObject 用の型キャスティング

  • ネストした型
  • 実際のネストした型
    ネストした型への参照

  • 拡張機能
  • 拡張機能の構文
    計算されたプロパティ
    イニシャライザ
    メソッド
    変異するインスタンスメソッド
    サブスクリプト
    ネストした型

  • プロトコル
  • プロトコルの構文
    プロパティの要件
    メソッドの要件
    変異メソッドの要件
    イニシャライザの要件
    プロトコルイニシャライザ要件のクラス実装
    失敗可能イニシャライザの要件
    型としてのプロトコル
    デリゲート
    拡張機能を持つプロトコル準拠の追加
    条件付きでプロトコルに準拠
    拡張機能を持つプロトコルの採用を宣言
    合成された実装を使用したプロトコルの採用
    プロトコル型のコレクション
    プロトコルの継承
    クラス専用プロトコル
    プロトコルの構成
    プロトコル準拠の確認
    Optional のプロトコル要件
    プロトコル拡張機能
    デフォルトの実装の提供
    プロトコル拡張機能に制約を追加

  • ジェネリック(汎用)
  • 汎用が解決する問題
    汎用関数
    型パラメータ
    型パラメータの命名
    汎用の型
    汎用型の拡張
    型制約
    型制約の構文
    実際の型制約
    関連型
    実際の関連型
    既存の型を拡張して関連型を指定
    関連型に制約を追加
    関連型の制約でプロトコルを使用
    汎用のWhere 句
    汎用の Where 句を含む拡張機能
    文脈上の Where 句
    関連型と汎用の Where 句
    汎用のサブスクリプト

  • 不透明な型とボックス化された型
  • 不透明な型が解決する問題
    不透明な型を返す
    ボックス化されたプロトコル型
    不透明な型とボックス化されたプロトコル型の違い

  • 自動参照カウント
  • どのように ARC は働くか
    実際の ARC
    クラスインスタンス間の強い循環参照
    クラスインスタンス間の強い循環参照の解決
    弱い参照
    所有されていない参照
    所有されていない Optional の参照
    所有されていない参照と暗黙に開封された Optional のプロパティ
    クロージャの強い循環参照
    クロージャの強い循環参照の解決
    キャプチャリストの定義
    弱い参照と所有されていない参照

  • メモリの安全性
  • メモリへのアクセス競合の理解
    メモリアクセスの特徴
    In-Out パラメータへのアクセスの競合
    メソッド内の Self へのアクセスの競合
    プロパティへのアクセスの競合

  • アクセス制御
  • モジュール、ソースファイル、パッケージ
    アクセスレベル
    アクセスレベルの基本指針
    デフォルトのアクセスレベル
    ターゲット一つのアプリのアクセスレベル
    フレームワークのアクセスレベル
    ユニットテストのターゲット用のアクセスレベル
    アクセス制御の構文
    カスタム型
    タプル型
    関数型
    列挙型
    生の値と関連する値
    ネストした型
    サブクラス化
    定数、変数、プロパティ、およびサブスクリプト
    ゲッタとセッタ
    イニシャライザ
    デフォルトのイニシャライザ
    構造体型用のデフォルトメンバ化イニシャライザ
    プロトコル
    プロトコルの継承
    プロトコルの準拠
    拡張機能
    拡張機能の private メンバ
    汎用(ジェネリック)
    型エイリアス

  • 高度な演算子
  • ビット単位演算子
    ビット単位の NOT 演算子
    ビット単位の AND 演算子
    ビット単位の OR 演算子
    ビット単位の XOR 演算子
    ビット単位の左シフトと右シフト演算子
    符号なし整数のシフト動作
    符号付き整数のシフト動作
    オーバーフロー演算子
    値オーバーフロー
    優先順位と結合性
    演算子メソッド
    接頭辞と接尾辞演算子
    複合代入演算子
    等価演算子
    カスタム演算子
    カスタム挿入辞演算子の優先順位
    Result Builder (結果の確立)

  • 言語リファレンスについて
  • 文法の読み方

  • 語彙の構造
  • 空白とコメント
    識別子
    キーワードと句読点
    リテラル
    整数リテラル
    浮動小数点リテラル
    文字列のリテラル
    正規表現リテラル
    演算子

  • 型注釈
    型識別子
    タプル型
    関数型
    エスケープしないクロージャの制限
    配列型
    辞書型
    Optional の型
    暗黙に開封された Optional の型
    プロトコルを構成する型
    不透明型
    ボックス化されたプロトコル型
    メタタイプ型
    Any 型
    Self 型
    型の継承句
    型の推測

  • 接頭辞式
    In-Out 式
    Try 演算子
    Await 演算子
    挿入辞式
    代入演算子
    三項条件演算子
    型キャスト演算子
    一次式
    リテラル式
    Self 式
    スーパークラス式
    条件式
    クロージャ式
    キャプチャ・リスト
    暗黙のメンバ式
    括弧で囲まれた式
    タプル式
    ワイルドカード式
    マクロ展開式
    キーパス式
    セレクタ式
    キーパス文字列式
    接尾辞の式
    関数呼び出し式
    ポインタ型への暗黙的な変換
    イニシャライザ式
    明示的なメンバ式
    接尾辞の self 式
    サブスクリプト式
    強制値の式
    Optional の連鎖式

  • ループ文
    For-In 文
    while 文
    Repeat-While 文
    分岐文
    if 文
    Guard 文
    switch 文
    switch 文は、網羅的でなければならない
    将来の列挙型 case の切り替え
    実行は暗黙的に case を Fall Through しない
    ラベル付き文
    制御転送文
    Break 文
    Continue 文
    fallthrough 文
    return 文
    throw 文
    defer 文
    do 文
    コンパイラ制御文
    条件コンパイルブロック
    行制御文
    コンパイル時診断文
    利用可能条件

  • 宣言
  • トップレベルのコード
    コードブロック
    Import 宣言
    定数の宣言
    変数の宣言
    格納された変数と格納された変数のプロパティ
    計算された変数と計算されたプロパティ
    格納された変数監視者とプロパティ監視者
    型変数プロパティ
    型エイリアス宣言
    関数の宣言
    パラメータ名
    パラメータ修飾子
    In-Out パラメータ
    Borrowing と Consuming パラメータ
    パラメータの特殊な種類
    メソッドの特殊な種類
    特別な名前のメソッド
    Throw する関数とメソッド
    Rethrow する関数とメソッド
    非同期関数とメソッド
    Never Return (返さない) 関数
    列挙型の宣言
    任意の型の case を列挙
    間接による列挙
    生の値型の case を列挙
    列挙型 case へのアクセス
    構造体の宣言
    クラスの宣言
    Actor の宣言
    プロトコルの宣言
    プロトコルプロパティ宣言
    プロトコルメソッド宣言
    プロトコルイニシャライザ宣言
    プロトコルサブスクリプト宣言
    プロトコルに関連した型の宣言
    イニシャライザ宣言
    失敗可能イニシャライザ
    デイニシャライザ宣言
    拡張機能の宣言
    条件付きの準拠
    オーバーライドされた要件はいくつかの汎用文脈では使用されない
    プロトコル準拠性は冗長であってはならない
    明示的な冗長性の解決
    暗黙的な冗長性の解決
    サブスクリプト宣言
    型サブスクリプト宣言
    マクロの宣言
    演算子の宣言
    優先順位グループ宣言
    宣言修飾子
    アクセス制御レベル

  • 属性
  • 宣言の属性
    attached
    available
    backDeployed
    dynamicCallable
    dynamicMemberLookup
    freestanding
    frozen
    inlinable
    main
    NSApplicationMain
    preconcurrency
    propertyWrapper
    resultBuilder
    Result-Building Methods
    Custom Result-Builder Attributes
    UIApplicationMain
    unchecked
    インターフェイスビルダーで使われる宣言属性
    型の属性
    Sendable
    Switch Case 属性
    unknown

  • パターン
  • ワイルドカードパターン
    識別子パターン
    値結合パターン
    タプルパターン
    列挙型 case パターン
    Optional パターン
    型キャストパターン
    式のパターン

  • 汎用パラメータと引数
  • 汎用パラメータ句
    汎用の where 句
    汎用引数句

  • 文法のまとめ
  • 語彙の構造



    宣言
    属性
    パターン
    汎用パラメータと引数

  • マニュアルの変更履歴


  • Swift:String

  • 第一部:型
  • String
  • init()
  • init(count:repeatedValue:)
  • isEmpty
  • hasPrefix(_:)
  • hasSuffix(_:)
  • toInt()
  • +
  • +=
  • ==
  • <
  • Array<T>
  • init()
  • init(count:repeatedValue:)
  • subscript(_: Range<Int>)
  • append(_:)
  • insert(_:atIndex:)
  • removeAtIndex(_:)
  • removeLast()
  • removeAll(keepCapacity:)
  • reserveCapacity(_:)
  • count
  • isEmpty
  • capacity
  • sort(_:)
  • sorted(_:)
  • reverse()
  • filter(_:)
  • map(_:)
  • reduce(_:combine:)
  • +=
  • Dictionary<Key: Hashable, Value>
  • init()
  • init(minimumCapacity:)
  • subscript(key: Key)
  • updateValue(_:forKey:)
  • removeValueForKey(_:)
  • removeAll(keepCapacity:)
  • count
  • keys
  • values
  • ==
  • !=
  • 第2部:プロトコル
  • Equatable(同等視)
  • ==
  • Comparable(比較可能)
  • <
  • Printable(印刷可能)
  • description
  • 第3部:自由関数
  • print(_:)
  • println(_:)
  • print()
  • アルゴリズム
  • sort(_:)
  • sort(_:_:)
  • sorted(_:)
  • sorted(_:_:)
  • find(_:_:)
  • マニュアル変更履歴