問題タブ [nsvaluetransformer]

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.

0 投票する
1 に答える
34611 参照

ios - iPhone の Core Data の Transformable 属性タイプで何ができますか?

属性には、この変換可能なデータ型があります。それは何のために良いですか?良い例はありますか?

これで遊んでみたいです。しばらく検索した後、これに出くわしました: NSValueTransformer. これには何かが必要なようです。

では、これをどのように開始すればよいでしょうか。たとえば、UIColor オブジェクトを格納したい場合、そのためのトランスフォーマーを作成しますか?

この物体は正確に何に、または何から変化していますか? NSData? また、トランスフォーマーに渡すオブジェクトは、任意のプロトコルに従う必要がありますか?

0 投票する
1 に答える
4601 参照

objective-c - NSValueTransformerを使用してNSManagedObjectインスタンスの値を設定する

カスタムNSValueTransformerを使用して、コアデータストアに色情報を保存しています。TransformableデータとUIColorインスタンスの間の変換は、カラーデータが既にストアにある場合(つまり、アプリが実行されて終了した場合)にうまく機能します。ただし、最初にアプリを実行してこれらの値を(テキストファイルから)ロードすると、NSCFStringとして「スタック」します。

このコード行の「属性」は、NSManagedObject属性名であるキーと、それらの属性の期待値である値を持つディクショナリです。私の色の例では、キーと値のペアは「color」:「1,1,1,0.5」です。

「color」の値は、NSValueTransformerを介して変換され、アプリが再度実行されたときにUIColorに再変換されるまで、このインスタンスでは文字列のままになります。

ここでは、NSValueTransformerで実行しているのと同じ変換を実行できますが、これは、理論的にはすべてのトランスフォーマーに使用できる、作成したユーティリティクラスに含まれています。また、新しく作成されたすべてのNSManagedObjectインスタンスをメモリから取り出して、変換を強制的に実行する方法を見つけることも考えましたが、それはハックのようです。

注:この「ハック」は私にとってはうまくいきます。続けましょう。それでも醜い感じがします。同様の問題が発生している場合や「正常に機能する」解決策を探している場合は、NSManagedObjectContextのresetメソッドを使用してください。

何か案は?

(これは「変換可能なCore Data属性がカスタムNSValueTransformerを使用しないのはなぜですか?」に似ていますが、タイトル以外では問題が異なるようです)

これが私のNSValueTransformerです

0 投票する
1 に答える
684 参照

ios - UIImageをコアデータに保存します。NSValueTransformersのトラブル

iPhoneのカメラから撮った写真をコアデータに保存しようとしています。

UIImageをカメラから取得しました。その後、どうしたらいいのかわからない。

各写真は質問エンティティに関連付けられています。現在、質問エンティティには画像フィールドがありません。Imageエンティティとの関係があります。これは、各質問に多くのUIImageを関連付けることができるようにするためです。

そこで、質問エンティティを作成しました。UIImageをコアデータのImageエンティティに保存するにはどうすればよいですか?また、UIImageを質問エンティティに結合するにはどうすればよいですか?画像エンティティを作成する必要がありますか?ImageToDataTransformerを作成しましたが、誰がそれを呼び出しているのかわかりません。コアデータですか、それとも私ですか。xcdatamodelには、Imageエンティティがあります。そこでImageToDataTransformerを入れました。

UIImageにURLを保存する必要があることは承知していますが、画像の保存方法を理解したいと思います。それは私にはちょっと混乱しているようです。

ありがとう

0 投票する
1 に答える
883 参照

objective-c - CoreData 整数属性の NSPopupButton の NSValueTransformer

いくつかのエンティティ属性 (整数) の可能な値を示す NSPopupButton を備えた CoreData/SQLite アプリがあります。データベース内の属性値が自動的に表示されます。ユーザーは別の値を割り当てることができる必要があるため、コードは起動時にすべての可能な値の配列を生成します。私の XIB には、ボタン用の NSObject と可能な値用の NSArrayController があります。バインディングが完了し、すべて正常に動作します。

もちろん、数字だけを使用することはユーザーにとって明確ではないため、ポップアップ ボタンの数字を単語に置き換える値変換プログラムを作成しました: 1=>赤、2=>緑、3=>青。

問題は、選択されたポップアップ項目だけが単語に置き換えられることです。また、エンティティ属性を変更するためにポップアップ ボタンで別の値を選択すると、それは保存されません。TableView で別のオブジェクトを選択してから変更したオブジェクトに戻ると、ポップアップが NoValue を示します。

理由がわかりません。ご協力ありがとうございました。

ヘッダー ファイル「ColorOption.h」のコードは次のとおりです。

実装ファイル「ColorOption.m」のコードは次のとおりです。

0 投票する
1 に答える
890 参照

xcode - XCode 4.2: Core Data 属性タイプ「Transformable」の「Value Transformer Name」はどこに行ったのですか?

Core Data SQLite データベースへの/からの挿入/取得を可能にするために、aを to/fromNSValueTransformerに変換するサブクラスを作成しています。ただし、Xcode 4.2 統合データ モデル エディターで属性タイプを選択した後、使用するトランスフォーマー クラスを指定するプロパティがありません。UIImageNSDataTransformableValue Transformer Name

これがどこに移動したか知っている人はいますか?以前のバージョンの Xcode にはありました。

どうもありがとう!

0 投票する
1 に答える
322 参照

cocoa - Binding と Value Transformer を介してビュー (NSTableColumn) に対多関係を表示する

いくつかの属性と「エイリアス」という名前の対多関係を持つエンティティ タグ (コア データ内) があります。

私のArrayControllerは、Xcodeで次のように「バインド」されています。

すべての属性で問題なく動作し、他の列には正しい値が表示されます。

あるコラムでは、この対多関係を「表示」しようとしています。単純にそれを行い、NSTableColumn の値を ArrayController.arrangedObjects.aliases (他のすべての属性と同様) にバインドすると、画面に次のように表示されます。

()、名前エイリアス、isOptional 1、isTransient 0、エンティティ タグ、renamingIdentifier エイリアス、検証述語 ( )、警告 ( )、versionHashModifier (null)、宛先エンティティ TagAlias、inverseRelationship タグ、minCount 0、0x10053db10 の maxCount 0 の関係障害

関係のためのある種のCoreDataプロキシのようです...

次に、NSValueTransformer のサブクラスを作成します。

バインディングでValue Transformerとして使用しようとしました。しかし、私は私の実装で迷っています:

transformValue: メソッドでは、値はクラス '_NSFaultingMutableSet' であり、エイリアスのセット/配列または有用なものを取得する方法がわかりません。

目標は、各エイリアスの連結の NSString を構築することです。何かのようなもの:

aTag : エイリアス1 エイリアス2 エイリアス3 ...

0 投票する
0 に答える
182 参照

cocoa - NSValueTransformer を使用したクエリ

1.私のアプリケーションでは、テーブル列の各行に (3 つの異なる値の中で) 特定の値を表示する必要があります。各行に表示される値は、2 つの異なるモデル キー パスの値を確認することで決定できます。

これは、「1つのキーパスとカスタム値トランスフォーマークラスを使用した表示パターンValue1」と「他のキーパスと同じ値トランスフォーマーを使用した表示パターンValue2」を使用したバインディングを使用して実装しようとしましたが、トランスクラス。誰でもこの問題を解決するのを手伝ってくれますか?

2.他のアプリケーションには、3 列のテーブル ビューがあり、最初の列には完全な単語が表示され、2 番目の列にはその単語のプレフィックスが表示され、3 番目の列にはその単語のサフィックスが表示されます。

バインディングと 2 つのカスタム値トランスフォーマー クラスを使用してこの要件を実装しました。コードを最適化するための 1 つのカスタム値トランスフォーマー クラス。

前もって感謝します。

0 投票する
1 に答える
1856 参照

iphone - 画像のコアデータ変換可能属性に関する問題

私は非常に簡単なことであると思われることに固執しています。コアデータエンティティに、変換可能な属性として割り当てられた画像を(バインディングを介して)保存/表示させます。

スタック上の多くの関連する投稿を読みましたが(たとえば、こことここを参照)、サンプルコードを開発し、他の記事を調査した後(たとえば、ここここ参照)、まだ問題があります。これは私の以前の質問に関連していますが、まだ解決していません。

問題を実証するために、簡単なドキュメントベースのCoreDataAppを作成しました。CoreData管理対象オブジェクトは「TheEntity」および属性「theImageAtt」と呼ばれます。Core Dataで定義されているエンティティを以下に示します(ImageValueTransformerはNSValueTransformerです)。
ここに画像の説明を入力してください

XCodeにNSManagedObjectサブクラスヘッダーと実装ファイルを生成させます(簡単にするために「name」属性のコードを省略しました)。

以下は、私の「ImageValueTransformer」のヘッダーファイルと実装ファイルです。スタックや他の場所でのこの例がたくさんあります(tiff担当者は任意です)。

値トランスフォーマーは、MyDocument.mにインスタンスを割り当てることで初期化/登録できますが、最終的には、トランスフォーマーヘッダーがエンティティヘッダーにインポートされている限り、それほど重要ではありません(上記を参照)。私はこれを試しましたが、以下のエラーは削除されません。参考までに、バリュートランスフォーマーを登録する必要がある かどうかについては以前に説明しました(CornPuffとBrian Websterのコメントを参照)。

手元の問題に戻ると、Appleの良いコード例がここにあります。これは、値トランスフォーマーの代替の初期化を示しています。私もそのセットアップを試しました。

これを実行に移すと、テストイメージをロードし、それをMyDocument.mの変換可能な属性に割り当てるメソッドがあります(NSTableで選択したエンティティインスタンスから)。

コードが壊れている場所をゼロにする、以下の行:

エラーが発生します:

上記の行をコメントアウトすると、NSTableは正常に読み込まれます(したがって、バインディングとアレイコントローラーは問題ないように見えます)が、もちろんNSImageViewに画像はありません。

チェックとして、Image Transformerで使用される変換コードは期待どおりに機能します(これは値トランスフォーマーとは別にテストされます)。

私はこれに何が欠けていますか?

0 投票する
2 に答える
859 参照

iphone - CoreData は、配列を返すときに文字列を想定し、文字列を返すときに NSData を想定します

NSValueTransformerコンマ区切りの文字列first, second, thirdを配列に変換する単純なものがあります。したがって、CoreData スキーマには、Transformeroptionsに設定しTransformedて指定する属性があります。

これは私のトランスフォーマーです:

変数を返すとresult、次のエラーが表示されます(lengthを期待しているように見えますNSString):

代わりに上記のテスト文字列を返すと、次のエラーが発生します (オブジェクトbytesが必要なようです)。NSData

私が把握していないように見える概念的な問題があるようです。また、不思議なことに、デバッガーを使用するときに「触れられる」ことはありません+(Class)transformedValueClass+(BOOL)allowsReverseTransformation

0 投票する
1 に答える
565 参照

objective-c - Cocoa: IB で使用するために値トランスフォーマーを初期化する必要がありますか?

「その他のソース」フォルダーに含まれる 2 つのカスタム値トランスフォーマーがあり、IB のテーブル列にバインドされているため、次のように初期化します。

}

そして、これらは IB で、配列されたオブジェクト、モデル キー パス、値トランスフォーマーにバインドされた列を使用して正常に動作します。

私の質問は、 3 番目のトランスフォーマーを作成したばかりですが、それを初期化していないということです。ファイル MyThirdTransformer.h / .m. そして、それはまだIBで動作します..??

これはなぜですか? 最初の 2 つを初期化する必要がありますか?