【SwiftUI】Widget_iOS14.0の実装方法【CoreDataとの連携】

この記事では、SwiftUIでのWidget_iOS14.0の実装方法、そしてより実践的な利用方法としてCoreDataとの連携方法を紹介しています。

 

◆動作検証環境

・ローカル環境:mac Catalina
・XCode:12.1
・SwiftUI:2.0
・iOS:14.0
・Life Cycle:SwiftUI App
スポンサードリンク

Widget_iOS14.0の実装方法【Widget機能の追加】

 

Widget機能を利用するには、まずホストとなるApp(Containing Appと呼んだりしますが、この記事ではホストAppとして説明しています)が必要となります。

 

通常の方法でプロジェクトを作成するか、Widget機能を利用するプロジェクトを開きます。

 

Widget_iOS14.0の実装条件

Widget_iOS14.0を利用するには、

  1. Interface:SwiftUI
  2. iOSバージョン:14.0以上

にする必要があります。

 

Widget機能の追加

Widget機能を追加するには、

  1. XCodeメニューの[File] -> [New] -> [Target]と選択
  2. Multiplatformで[iOS]を選択し、Application Extensionの中から[Widget Extension]を選択

Multiplatformで[iOS]を選択し、Application Extensionの中から[Widget Extension]を選択

 

Product Nameに任意の名前を指定します。

今回はInclude Configtation Intentのチェックを外して作成します(ユーザーが設定可能なWidgetを作成する場合は、こちらにチェックします)。

WidgetExtentionの追加画面

 

Activate WidgetExtension scheme? とメッセージが表示される場合は、[ Activate ]を選択します。

これで、Widget機能に関係するフォルダが作成されます。

これで、Widget機能に関係するフォルダが作成されます。

 

Widget_iOS14.0の実装方法【Widgetの表示確認】

 

Widgetの追加を行ったら、ホーム画面でWidgetの表示確認を行います。

ビルドするターゲットが追加したWidgetになっている事を確認し、ビルドします。

ビルドするターゲットが追加したWidgetになっている事を確認し、ビルドします。

 

デフォルトのままのコードでは、以下のように時刻が表示されます。

デフォルトのままのコードでは、以下のように時刻が表示されます。

 

デフォルトのWidgetのファイル(この記事のサンプルではTestWidget.swift)のデフォルトのコードは以下のとおりです。

 

Widgetの表示に直接関係するのは、以下の箇所です。

 

試しに、以下のようにコードを変更して、表示を確認します。

Widgetの表示は以下のようになります。

Widgetの表示は以下のようになります。

 

スポンサードリンク

Widget_iOS14.0の実装方法【WidgetとCoreDataの連携】

 

Widgetと通常のAppは別のターゲットとなり、そのままではデータの共有はできません。

今回はWidget、ホストAppでCoreDataを通し、共通のデータを利用できるようにします。

 

ホストAppとCoreDataは、以前の記事で紹介したものを利用します。

詳しくはこちらの記事を参考にしてください。

関連記事

この記事では、SwiftUIでのCoreData の基本的な実装方法【CRUD(作成、更新、削除)】を紹介しています。簡単なタスク管理App(タスク内容とスケジュールの登録)を作成しながら解説します。 ◆動[…]

【SwiftUI】CoreData の基本的な実装方法【CRUD(作成、更新、削除)】

App Groupの作成

おおもとのプロジェクト編集ファイルで、TARGETをWidgetにします。

[Siging & Capabilities]メニューで[+Capability] -> [App Groups]を選択します。

[Siging & Capabilities]メニューで[+Capability] -> [App Groups]を選択します。

 

+マークを選択しAppGroupを作成します。

Group名はGroup.com.sample.CoreDataTest のようにします。

Group名はGroup.com.sample.CoreDataTest のようにします。

 

AppGroupの作成ができたら、ホストApp、Widget両方に同じAppGroupを指定します。

 

Persistence.swiftの編集

作成したAppGroup に対応できるようにPersistence.swift を以下のように編集します。

 

Appファイルの編集

Persistence.swift の編集に対応するために、Applicationファイルを下記のように編集します。
 

関係ファイルのTarget Menbershipの指定

ホストAppのCoreDataに関係するファイルを編集し、WidgetファイルでもCoreDataのデータを利用できるようにします。

この記事で利用しているホストAppの場合、CoreDataTest.xcdatamodeld と、Persistence.swift のTargetMembershipを編集します。

TargetMembershipを編集します。

 

これで、ホストAppのAppGroupへの対応は一時完了です。

ビルドを行って、今までどおりCoreDataからの読み込み、書き込みができるか確認します。

 

Widget_iOS14.0の実装方法【WidgetでCoreDataのデータを利用する】

 

ホストAppの準備が整った後は、Widget側の編集です。

Widget側のファイルを以下のように編集します。

今回は、CoreData内の1番最初Contentデータを表示するようにします。

 

これでホストApp側とWidget側でCoreDataのデータの連携が行えました。

これでホストApp側とWidget側でCoreDataのデータの連携が行えました。

 


以上、SwiftUIでのWidget_iOS14.0の実装方法、実践的な利用方法としてCoreDataとの連携方法を紹介しました。