Open8

【iOS / Swift】SwiftUI学習メモ

noknok

はじめに

UIKitベースでのアプリ開発経験しかなく、SwiftUIは未学習の状態だった。
業務で使う予定があるわけでもないが、プライベートで興味があるので、参考書を見ながらSwiftUIを触ってみる。

そもそもiOS開発関連で忘れている事項があったり、何か新しい学びがあれば雑多にメモをしていく。

各種参考サイト

https://developer.apple.com/jp/programs/
https://www.swift.org/
https://developer.apple.com/documentation/swiftui/

noknok

Apple Developer Programに未登録時の制限事項

実機実行時に影響するため、制限事項について再確認
※以下、公式サイトより抜粋

Apple Developer Programに登録されていないApple IDでXcodeにサインインした場合、個人使用(Xcodeでは「Personal Team」に該当)を目的としたデバイス上でのテストを行うことができます。
ただし、このタイプの開発ワークフローには次のような制限があり、定期的にアプリをデバイスに再プロビジョニングする必要があります。

・アカウントに一度に登録できるアプリIDの数は10個に制限されており、いずれも7日後に期限切れになります。
・アカウントに登録できるテストデバイスの数は、プラットフォームごとに3台に制限されており、いずれも7日後に期限切れになります。
・プロビジョニングプロファイルは発行から7日後に期限切れになります。期限切れ後は、アプリを再ビルドしてデバイスに再インストールする必要がある場合があります。

https://developer.apple.com/jp/support/compare-memberships/

noknok

少し便利な文字列の扱い方

複数行の文字列を作りたい時

ダブルクォーテーション3つで囲む

var hoge = """
改行を
"たくさん"
書けます
"""

文字列に変数を埋め込みたい時(JSのテンプレート構文的な使い方)

「(変数)」の形式で変数を埋め込む
(「バックスラッシュ + ()」の形式0

var hensu = 12345
var hoge = "文字列の途中に \(hensu) を入れる"
noknok

Xcode15 SwiftUIで、UI部品をPreviewにドラッグアンドドロップできない件

結論

PreviewへUI部品をD&Dする機能は、Xcode15から削除された

PreviewWindow

参考サイト

noknok

プロジェクトナビゲーター上のファイルの、拡張子を表示する方法

概要

Xcodeを入れ直したせいか、拡張子が表示されなくなっていることに気づいた。
検索すると、Xcode13からファイルの拡張子がデフォルト非表示になっていた模様。
プロジェクトナビゲータ

Xcode13以降で、拡張子を表示する手順

以下のメニューから、表示設定可能
[Xcode] > [Settings...] > [General] > [File Exteinsions] > "Show All" を選択
設定
プロジェクトナビゲータ設定後

参考サイト

https://forums.developer.apple.com/forums/thread/681949

noknok

「Cannot preview in this file」エラーでプレビューが表示されない問題の対応

概要

ネットからダウンロードしたサンプルプロジェクトをXcodeで開いた際、表題のエラーが表示されてプレビュー表示されない問題が出た。
※既存のプロジェクトではプレビュー表示できている。
プレビューエラー

解決策

  1. ターミナルを起動し、cdコマンドでプロジェクトルート直下へ移動する
  2. 以下コマンドを実行する(パスワードは、Mac起動時のサインインパスワード入力)
ターミナル
sudo xcodebuild -license
  1. Xcodeを再起動し、改めてプロジェクトを開くと解決した
    (状況的に、なぜ上記のコマンドで解決できたのか不明)

参考サイト

https://forums.developer.apple.com/forums/thread/117487

noknok

Xcode15で、SwiftUIのプレビュー表示を複数View同時表示できない件

概要

Xcode13に対応した書籍を読んでいたら、複数Viewを同時に並べてプレビュー表示できる旨の記載があった。
ただ、Xcode15だと複数Viewを同時に並べてプレビュー表示できなさそうだったので調査を実施した。

結論

Xcode14より、複数Viewを同時に並べてプレビュー表示する機能は削除された模様。
Xcode14以降からは、プレビュー画面のタブを切り替えることで、プレビュー表示を切り替える。
複数Viewのプレビュー表示

参考サイト

https://stackoverflow.com/questions/73840337/how-to-preview-multiple-views-in-the-same-canvas-swiftui
https://stackoverflow.com/questions/77021522/is-it-no-longer-possible-to-display-multiple-previews-at-the-same-time-with-the

noknok

UIKitとSwiftUIにおける設計パターン

大まかに以下の認識。

フレームワーク 設計パターン
UIKit UIKitの場合は、MVC(Model-View-Controller)パターンが一般的に採用されてきた(UIKitの設計がMVCパターンに適しているため)
ただし、現在はMVVM(Model-View-ViewModel)パターンの採用も増えてきている
SwiftUI SwiftUIの場合は、MVVM(Model-View-ViewModel)パターンが一般的(SwiftUIのデータバインディング機能と相性が良いため)
MVVMが推奨されている