//tips
//UserDefaults.standardの保存について
該当のエラー箇所が解決されたので記載する。
NavigationView{
List{
ForEach(0..<tasks.count, id: \.self) { index in
TextField("PlainTextFieldStyle", text: self.$tasks[index] , onCommit: {
UserDefaults.standard.set(self.tasks, forKey: "キー")
})
}
//Text(self.tasks[task])}
.onDelete(perform: rowRemove)
}
.navigationBarTitle("Menu")
var tasks = userDefaults.array(forKey: "キー")
}
NavigationView内にUserDefaultsをそのまま置くとエラーになるようで、 TextFieldのonCommitの中にUserDefaultsを書くことでエラーを解決できた。
実はTextFieldにはonEditingChanged: (Bool) -> Void、onCommit: () -> Voidというイベントを引数にとることができ、
ユーザーがアクションを起こしたタイミングで実行する処理をonCommit以下に記載することができる。
下記参照。
https://capibara1969.com/1546/
Unityで使用していたC#と異なり、swift言語は、ロジックというより、知識量を要求されているので、swiftを使いこなせるには忍耐が必要になりそう。獲得しやすい知識であればいいが、獲得しにくいものは知っている人に聞く以外にない点が厄介。
現在はnilの取り扱いでコード上に問題が起きているので、内容を確認する。
Value of optional type '[Any]?' must be unwrapped to refer to member 'count' of wrapped base type '[Any]'
Xcodeでのエラー内容は上記だが、swiftのplaygroundではエラーが出ていない模様。
オプショナル型とは変数にnilの代入を許容するデータ型で、反対に非オプショナル型はnilを代入できないもの。オプショナル型の変数にはデータ型の最後に「?」か「!」をつける。
こちら!をつけても?をつけてもエラーになるので確認中。
//iOS Certificate の作成
Certificate」でリリースのための証明書を発行。アプリごとの「Apple ID」を作成。それらを利用して「Provisioning Profile」を作成。ファイルをパソコンにダウンロード。最後に「App Store Connect」へアプリの詳細情報を登録・申請という流れで行う。
Macで「キーチェーンアクセス」アプリを起動し、上部のキーチェーンアクセスから証明書アシスタント > 認証局に証明書を要求をクリック。自分のメールアドレス(私の場合はappleに紐づいたicloudのアドレス)を入力し、要求の処理をディスクに保存に設定し、完了。CertificateSigningRequest.certSigningRequestを保存する。
Apple developerのサイトでCertificates, Identifiers & ProfilesのCertificates横にあるプラスボタンを押し、iOS Distribution (App Store and Ad Hoc)を選択。
ファイルをアップロードしてくれという指示が来るのでCertificateSigningRequest.certSigningRequestをアップロード。これによりDownload Your Certificateから .cerファイルをダウンロードできるようになる。これも保存。
//apple developer アプリ申請
次に、App IDの作成を行う。
Certificates, Identifiers & Profilesからidentifierページ
のプラスボタンを押し、App IDsのページに入りプラスボタンでIDを選択。
記入項目にあるBundleIDはXCodeでアプリ作成する際に設定したものを記載。
Descriptionは日本語は記載できなかったので英語名を入力した。
//provisoning profileの作成
profileページからプラスボタンを押し、iOS App Developmentを選択。その後にApp IDを求められるので先ほど作成したものを登録。
Select Certificatesで先ほど登録したCertificateを選択。
わかりやすい名前をつけてGenerate a Provisioning Profileで作成し、ダウンロード。
そのファイルをダブルクリックすればxcodeに反映されるらしいが、私の場合は、xcodeは反応せず、signingからProvisioning profileを確認し、先のものを設定すると、
doesn't include signing certificate "Apple Development:
とエラーが表示された。
XcodeのPreferencesを選んでManage Certificates をクリック。その後左下のプラスボタンを押し、apple distributionを設定する。
Apple developerページもどり、certificatesに先ほど作成しているものがきちんと追加されているか確認。
確認できたら、profilesページに行き、プラスボタンをクリック。今度はdistiributionのapp storeを選択する。