問題タブ [mogenerator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - CoreData+mogenerator - 中間データモデルの「setValue(forKey:)」が最終データモデルのエンティティの「人間」クラスを参照するのを防ぐ方法は?
Core Data を mogenerator と組み合わせて使用して、かなり大きくリンクの多いデータ オブジェクト グラフを管理しています。
過去の不運な設計上の決定 (データをTransformable
オブジェクトとして格納する) が原因で、移行の実行時にメモリの問題が発生しています。移行は非常に難しいため、軽量ではカバーできず、カスタム移行はすべてをメモリにロードしようとしますが、惨めに失敗します。
Marcus Zarra による優れたCore Data bookに基づいて、軽量、カスタム、または「独自の」移行戦略に従って、連続する移行パスを組み合わせることができるように、彼の漸進的な移行アプローチを適応させました。これを使用して、「ビッグデータ」オブジェクトをロードしてディスク上の外部ファイルに書き出す中間データモデルを作成し、代わりにそのファイルへの URL を保持します。
基本的に、これは次のようになります。
2 つの軽量移行の間に、 を中間モデルに接続し、をNSPersistentStoreController
使用して変更が必要なオブジェクトをフェッチします。データをディスク上のファイルに書き込み、オブジェクト自体に保存されているデータを無効にします。その間、私は定期的にモックを保存し、処理されたオブジェクトをフォールトします。fetchLimit
fetchBatchSize
これはかなりうまく機能します..しかし...移行の別の部分がうまく機能していません。そこでは、関係を削除し、それを移動生成されたファイルの「人間」クラスの計算されたプロパティに置き換えました。
同じ原則に沿って、'v1.5-to-v1.5' パスでは、格納されている情報myRel
を別のレベルに移動し、nil
その後の関係を設定しようとしています。データモデル v2 を使用するアプリはmyRel
、移動されたデータを取得する計算プロパティとして追加したため、同じインターフェイスを使用して参照されるオブジェクトに引き続きアクセスします。
この動きを行うコードは次のとおりです。
この最後の行によりランタイム クラッシュが発生し、この中間モデルではなく、最終モデル バージョン用に生成された mogenerator の「オブジェクト」ファイルにつながるスタック トレースが表示されます。
私が作業しているデータモデルには、計算されたプロパティで参照されているエンティティが含まれていないため、当然これはクラッシュしますmyRel
(これらはデータモデル v2 にのみ存在します)。
これは私を驚かせます。特に、クラスの基礎となる動的ロジックを「スライス」することを期待して を構築しましたNSFetchRequest
が<NSManagedObject>
、MyEntity
Core Data/Swift はエンティティ名/説明に基づいてランタイム タイプを推測しているようです。これを回避する方法はありますか?
も使用してみsetPrimitiveValue
ましたが、それによりモックが変更を見逃してしまい、オブジェクトに加えた変更がそのように保存されません。
macos - Mac OS 10.14.4 に mogenerator をインストールする方法
以下のコマンドをターミナルに書き込んだ後、mogenerator をインストールできません。
そして次のようなエラーが発生します-bash: brew: command not found
すべてのプロセスのステップを教えてください。
ios - Xcode はビルド時に Tools/mogenerator を自動的に削除します
Tools/mogenerator
昨日、挑発することなく、ビルドするたびにXcode がプロジェクト内のファイルを自動的に削除し始めました。結果の git 削除を破棄して (ファイルを元に戻して) 再構築すると、Xcode はすぐにファイルを再度削除します。このファイルはプロジェクトの実行スクリプトに必要なため、削除すると明らかにビルドが壊れますが、Xcode が属する場所にそのままにしておくように説得する方法はないようです。
私は持っている:
- 掃除して作り直した
- 走る
git clean -fdx
- 削除しました
Xcode/DerievedData
- マシンを再起動しました
- レポを核攻撃して再クローン化
- リポジトリを別のフォルダーに複製しました
- 更新された Xcode
- Xcodeをアンインストールして再インストール
私はそれらのほとんどを複数回行いました。
私のチームでこの問題を抱えているのは私だけであり、レポのクリーンなクローンでもまったく同じ問題が発生するため、私のコードとは何の関係もないと確信しています。それは私の環境にあるものでなければなりません。しかし、このように自分の環境に影響を与えるようなことをしたことを思い出せません。昨日、問題なくビルドし、5 分後に再度ビルドしたところ、この問題が発生しました。私は何も変えませんでした。
チームの他のすべてのエンジニアと同様に、私は完全に途方に暮れています。私たちの誰もこれまでにこのようなことを見たことはなく、私たちが試したことも何もうまくいきませんでした. これは誰にとってもおなじみの音ですか?環境をきれいにするために実行できる別の手順はありますか?
アップデート
Mogenerator ターゲットのこの実行スクリプトが問題を引き起こしているようです。を参照する唯一のものだったので、最初はそれが機能すると思いましたTools/mogenerator
が、それを削除すると、ファイルはまったく削除されず、すべてが正常に機能することがわかりました。私のチームの他の全員がまったく同じスクリプトを使用しているため、なぜ私だけに問題が発生するのかわかりません。
Tools/mogenerator -m Inspirato/Inspirato.xcdatamodeld --machine-dir Inspirato/Model/Generated --human-dir Inspirato/Model --swift --template-var arc=true --template-var scalarsWhenNonOptional=true