39ギター

35年ぶりに弾き始めたクラシックギター
神経痛と戦いながら
どこまでバッハに迫れるか
蝶も花もアーチェリーもあるよ

変数の共有はObservableObjectとEnvironmentObjectで

2020-02-11 21:49:03 | 日記

こんばんは

 

最近はブログをさぼり気味です

このgoobログは一年前の記事をメールで知らせてくれます

ブログは書いておくと一年後に「あ〜こんな事があったんだなぁ」と思い出す事で少し楽しくなりますよね

だから毎日せっせと書いた方がいいのですが、最近はプログラミングに時間を取られてついサボってしまいます

 

SwiftUIによるアーチェリーアプリ

今日は先日書いておいたように、データをアプリ全体で共有するように改造しました

やり方は本を読んだ時は少し難しいような感じだったんですがやってみると簡単でした

共有したいデータを一つのクラスにまとめておきます

そのクラスの定義ではちょっとした呪文をつけておきます

class WorkData: ObservableObject {

       @Pulished var targetNo: Int = 0

}

このオブジェクトを共有するよと言う事をSceneDelegate.swiftで宣言します

let contentView = ContentView()

        .environmentObject(WorkData())

このデータクラスを使う 構造体の先頭で

@EnvironmentObject var workData:WorkData

と宣言しておけばあとは

self.workData.targetNoで共有した変数が使えます

簡単ですね

この調子でアプリで使う変数を一箇所にまとめて、全体のコードを調整して見た目のエラーがなくなったところで、イザ実行

ビルドは成功、よしよし次はライブビューで表示、しばらく待っていると

あれ?ガ〜ン・・・

アプリがクラッシュしたとのメッセージ

どこがおかしいんだといちにちかけて調査し色々と変更してみたが全然ダメ

しかしビルドは成功しているのにおかしいなぁ

ダメもとで実機にプログラムを転送してみました

あれ?正常に起動した???

どう言う事ですか?

しばらく冷静になって考えたどり着いた答えは

この変数共有はメモリー食いでビルドは成功したもののライブビューを起動できなくなった

としか考えられない

ライブビューはシミュレーター起動の次にメモリー食いのようです

このiMacはメモリーが8GBしかなく増設は不可能

仕方がない、これから先は実機でテストですね

ライブモードもデバッグモードも使えないし、大変だこりゃぁ・・・

う〜〜 32GB欲しい・・・

 

まあいいや、できるところまでやってみよう

 

今日は昼前に駅前の福屋の10階の本屋さんに行って立ち読みしてきました

先日紹介したデータベースRealm(レルム)です

そろそろデータの保存方法を考えておかないといけないので調べていたらこのRealmがよく使われているそうなので3年前の本ですが、本はこれしかないのでちょっと中身を調べてきました

十分な機能があり使えるんですが、今の環境に入れてメモリーが持つのかなぁ

そこが心配ですね

本当はSQL文を直接書いて実行させたいのですが、まあ新しい言語の感覚で勉強すればいいでしょう

最終的にはこのRealmかSQLiteかですね

 

最近は割とアーチェリーの調子がいい

まあこれぐらいで喜んでいてもねぇ

 

最近暖かいのでボチボチ雑草の花が咲き始めました


最新の画像もっと見る

コメントを投稿