問題タブ [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.
objective-c - Core Data の「プリミティブ」アクセサーは何ですか?
Core Data Programming Guideから(私の強調):
デフォルトでは、Core Dataは、管理対象オブジェクト クラスのモデル化されたプロパティ (属性と関係) に対して、効率的なパブリックおよびプリミティブの get および set アクセサー メソッドを動的に作成します。
Objective-C を使い始めて以来、私はCore Data とmogeneratorを快適に使用してきましたが、プライベート API の使用が疑われるためにアプリの提出が拒否されるまで、これが何を意味するのか見たことがありませんでした。生成されたメソッドについての長い話ですsetPrimitiveTypeValue:
が、私の質問の内容ではありません。
このガイドを読んでいるときに、エンティティ属性のパブリック アクセサーとプリミティブ アクセサーのアイデアに出くわしました。別の引用ですが、さらに下に:
たとえば、属性 を持つエンティティが与えられた場合
firstName
、Core Data はfirstName
、setFirstName:
、primitiveFirstName
、および を自動的に生成しsetPrimitiveFirstName:
ます。
プリミティブアクセサーは何のためのものですか? BOOL 値を NSNumber にラップせずに直接割り当てることができるようにするためですか? もしそうなら、なぜ mogenerator はあらゆる種類の<Attribute>Value
, set<Attribute>Value:
,アクセサprimitive<Attribute>Value
を生成するという問題を経験したのでしょうか?setPrimitive<Attribute>Value:
私は混乱しています、誰が私を助けることができますか?
関連する質問:
objective-c - Doxygenを使用して別のファイルで宣言されたプロパティを文書化する方法は?
mogeneratorを使用してCore Dataクラスを生成します。Mogenerator は、機械クラスと人間クラスを生成します。これらは mogenerator が呼び出されるたびに生成されるため、開発者はマシン生成クラスを変更することは想定されていません。ただし、ヒューマン クラスは、開発者が望むように変更できます。
マシン クラスには、Core Data エンティティのすべてのプロパティの宣言が含まれています。Doxygen では、ファイル B からファイル A で定義されたプロパティをどのように文書化しますか?
編集:質問を説明するために例を追加
例:
最終的に、ここでの目標は、以下の例に似たものにすることです。
FileA.h (変更不可)
FileB.h
試してみました (@interface FileB @end ブロック内のドキュメント ブロック):
@property myProperty - Doxygen はドキュメントをプロパティに関連付けません。
\property myProperty - Doxygen はドキュメントをプロパティに関連付けません。
@property FileA::myProperty - Doxygen はドキュメントをプロパティに関連付けずに生成します。警告: FileB::myProperty に一意に一致するクラス メンバーが見つかりません
\property FileA::myProperty - 同上
解決
FileB.h
ios - mogeneratorでタイプセーフな構造体タイプのCoreData属性を使用するにはどうすればよいですか?
NSKeyValueCodingが処理できる構造体タイプの属性については、Appleのドキュメントで説明されているCoreDataアクセサーパターンを使用します。
たとえば、NSRange構造体をTransformableタイプのコアデータモデルで指定できます。次に、次の形式のNSManagedObjectサブクラスでアクセサーを提供することにより、クライアントのNSValueリグマロールを回避できます。
インターフェース:
実装;
ただし、Mogeneratorによって生成されたNSManagedObjectサブクラスは、Transformable属性をNSObjectプロパティとして宣言するため、クライアントはNSValueを取得/設定する必要があります。
(1)一時的なバッキング属性をいじるのではなく、単純なTransformableパターンを維持し、(2)Mogeneratorの「マシン」クラスの編集を回避しながら、mogeneratorでこの状況を処理するための最良の方法は何ですか?
ios - Mogenerator ios
Mogeneratorをインストールしました。今、私は何をしますか?どうやって使うの?
私が抱えている最初の問題は、mogeneratorのチェックボックス「インストール時にのみスクリプトを実行する」をチェックするかどうかわからないということです。
objective-c - Core Data によって生成された NSManagedObject クラスの拡張
Core Data を初めて扱ったので、NSManagedObject エンティティ用に Xcode が生成するクラスを拡張するためのベスト プラクティスを知りたいと思いました。
私はmogeneratorを見て、 SUPER HAPPY EASY FETCHING IN CORE DATAで提案されているのと同様のアプローチも使用しています。だから私は3種類のクラスを持っていました:
- EasyFetching カテゴリ (1 つのクラスのみ)。
- 生成された NSManagedObject サブクラス (例: _Entity);
- すべての非アクティブなオブジェクトの検索、オブジェクトのキャッシュのクリアなど、いくつかのカスタム メソッドを持つカスタム サブクラス (つまり、エンティティ)。
このアプローチにより、Core Data エンティティをリファクタリングして必要な回数だけ生成しながら、いくつかのカスタム コードを実行できました。しかし、エンティティのオブジェクト レベル メソッドを宣言できないなどの問題にも遭遇しました (NSManagedObjectContext は _Entity クラスしか認識していないため)。
現在、カテゴリを使用してエンティティの機能を拡張しています。カスタム オブジェクト レベル メソッドを使用できるため、これははるかにうまく機能します。現在、3種類のクラスがあります。
- EasyFetching カテゴリ (すべてのカスタム コードで使用するメソッドが多数あるため);
- 生成された NSManagedObject サブクラス (つまり、Entity)。
- NSManagedObject エンティティのカスタム カテゴリ (つまり、Entity+Custom.h)。
私の質問は次のとおりです。何をお勧めしますか?
回答ありがとうございます
reserved-words - Mogenerator と setPrimitiveType
レガシー Web サーバーから取得した約 6 個のテーブルがあります。これらのテーブルにはすべて「タイプ」列があります。これらの列名をアプリ レベルで同期させる必要があります。
mogenerator を使用して、それが作成する基本クラスはsetPrimitiveType属性を忠実に生成します。Apple はこの方法を気に入らず、私たちのアプリを拒否しました。
モデルの属性の特定のメソッドを作成しないように mogenerator を変更することは可能ですか?
objective-c - mogeneratorの新しいオブジェクト
Mogeneratorを使用して新しいです(見栄えがします!)。NSManagedObject * mo =[NSEntityDescription...]と同等の文がどのようになっているのか理解できません。
Mogenで新しいオブジェクトを作成するにはどうすればよいですか?
前もって感謝します。
ios - データモデルにエンティティが含まれていても、mogenerator はエンティティを生成しません。「モデルにエンティティが見つかりません。ファイルは生成されません」と報告します。
mogenerator (最新の 1.26) を取得して、コア データ モデル (xcdatamodel) からいくつかのボイラー プレート クラスを生成しようとしていますが、次のように報告されます。
xcdatamodel の内容は明らかに存在しますが、
私は何を間違っていますか?
Xcode 4.4.1 と mogenerator 1.26 を使用しています
cocoa - Core Data/Mogenerator を使用する OCMock が例外 NSInvalidArgumentException [NSProxy doesNotRecognizeSelector] をスローする
単体テストで OCMock を使用して NSManagedObjects をモックしています。私は Mogenerator を使用して、コア データ オブジェクトの機械および人間が読み取り可能なファイルを生成します。ブール値と文字列を返すために NSManagedObject をモックしようとしています。どちらもコア データ エンティティの属性です。をモックするBOOL
と、値がオブジェクトから正しく返され、クラスがそれを使用し、テストが正常にパスします。NSString
同じオブジェクトのプロパティをスタブしようとすると、 NSInvalidArgumentException [NSProxy doesNotRecognizeSelector]
.
呼び出しコードは次のとおりです。
例外は次のとおりです。
テスト目的で NSManagedObject の前にインターフェイスを配置することを推奨する方法がいくつかあることは知っていますが、これは Mogenerator マシン/人間のファイルに加えて複雑さを増しているようです。
このコードを完全に再構成せずに、これに関する他の提案はありますか? このコードは既に運用されており、新しい機能を開発する際に単体テストを追加しようとしています。
core-data - CoreData: モジェネレーター vs. カテゴリー
最近、外部の開発者から CoreData プロジェクトを継承しました。自動生成されたすべての NSManagedObject サブクラスを見つけることを期待していた場所で、代わりに、経験のないツールである Mogenerator によって生成されたクラス (いくつかのグーグルで明らかになったもの) があります。
このツールを使用する目的は、モデルが変更されてクラスが再生成されたときに失われることを心配することなく、CoreData エンティティに対応するクラスにカスタム コードを追加できるようにすることだと理解しています... しかし、私はできますこれはとにかくカテゴリを使用して。
私は現在、カテゴリよりも Mogenerator を使用することに本当の利点があるとは考えていません。
Mogenerator とカテゴリを使用する利点/欠点は何ですか? Mogenerator は、その他の目的にも使用できますか?