問題タブ [nscoding]

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 に答える
1430 参照

iphone - UIImage ファイルを NSData に変換して NSCoding で保存する

UIImageABRecordRefを自分のNSCoding適合クラスに保存しようとしています。私が知る限り、それUIImageNSCoding適合していないので、代わりに次の回避策を試しましたNSData

このクラスのインスタンスを保存しようとすると、何らかの理由でプログラムがすぐにクラッシュします。私は何を間違っていましたか、またはより良いことをしましたか: どうすれば私がやりたいことを達成できますか? ありがとう!

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

iphone - カスタム オブジェクトの無効な属性を持つ NSMutableArray

カスタム オブジェクトを含む nsmutable 配列を NSUserDefault に保存しました。しかし、取得しているときにオブジェクトを含む配列を取得しましたが、オブジェクトを反復処理しようとすると、アプリがクラッシュし、ローカル デバッガーで無効になりました

CFStringRef とログ - [メッセージ タイトル]: 認識されないセレクターがインスタンス 0x187900 に送信されました。

私のカスタム オブジェクトは NSCoding プロトコルに従います。配列を出力すると、オブジェクトとメモリの割り当てが 16 進数で表示されます。

私のメッセージ。テスト用に名前を属性に変更しました。

オブジェクトを保存して取得しようとするメソッド:

-(void)saveToFile:(NSMutableArray *)incoming{

}

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

ios - OSXとiOS間のnskeyedarchiverの互換性

デスクトップココアアプリケーションとiOSアプリケーション間でNSCodingプロトコルを実装するクラスを共有する場合、これら2つのアプリケーション間でオブジェクトをアーカイブすることによって作成されたデータファイルを共有することもできますか?

0 投票する
3 に答える
1057 参照

objective-c - NSCoder や NSKeyedUnarchiver は、同じオブジェクトの複数のデコードをどのように処理しますか?

NSCoder複数のオブジェクトによって共有およびエンコードされたオブジェクトが、次にデコードされたときにどのように処理されるのか疑問に思っていました。オブジェクトのコピーを 2 つ作成するか、それとも 1 つのオブジェクトをデコードして、それをデコードする他のすべてのオブジェクト間で共有するか?

以下に、このような状況の小さな例を示しました。

例:

  1. アプリケーションが起動します
  2. オブジェクト A とオブジェクト B がオブジェクト C をデリゲートとして設定する
  3. アプリケーションは終了通知を受け取ります。
  4. オブジェクト A とオブジェクト Bは、自身とそのすべてのオブジェクト (デリゲートを含む) をエンコードします。
  5. アプリケーションがシャットダウンして再起動する
  6. オブジェクト A とオブジェクト Bは、自身とそのすべてのオブジェクト (デリゲートを含む) をデコードします。

ステップ 6 の後、オブジェクト A とオブジェクト B の両方が同じデコードされたオブジェクトを共有するでしょうか、それともそれぞれが独自のコピーを持っているでしょうか?

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

iphone - ビューにカスタム画像を含むUIButtonが含まれている場合、UIViewControllerencodeWithCoderが失敗します

基本的に、私の問題はまさにそれがタイトルに書かれていることです。のサブクラスをエンコードしようとすると、をUIViewController呼び出すと。具体的には、。 [super encodeWithCoder]NSInvalidArgumentException-[UIImage encodeWithCoder:]: unrecognized selector sent to instance XxXXXXXX

ビュー内の唯一の画像画像はにありUIButton、これもNSCodingに準拠していると想定されており、スタックトレースにはへの呼び出しが含まれています[UIBUtton encodeWithCoder]。ボタンはプログラムで作成され[UIButton buttonWithType:UIButtonTypeCustom]、画像はで設定されsetImage: forState:ます。ここで何が起こっているのか本当にわかりません。私は明らかな何かを見逃していますか、それともUIButton本当に準拠していませんNSCodingか?

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

objective-c - NSKeyedArchiver が予期しないクラスを返しますか?

を拡張するカスタム クラスがありますNSString。を使用して(ドラッグ/ドロップ用に)シリアル化しようとしていNSKeyedArchiverます。...Coderクラスはメソッドをオーバーライドします。

しかし、実際にアーカイブ/アーカイブ解除を実行しようとすると:

出力は私が期待しているものではありません:

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

ios - iOS5 での iOS4 データのアンアーカイブが機能しない

NSDictionary使用して iOS 4 で をNSKeyedArchiverアーカイブしましたが、iOS 5 では を使用してアーカイブを解除しています

この例外をスローします

iOS 4 でのアーカイブ解除は正常に機能することに注意してください。 plutil -lintアーカイブが正常であることを報告します。参考までに、次のとおりです。

http://www.complang.tuwien.ac.at/schani/monkeyfull.ltg

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

ios - encodeObjectを使用してUIPickerViewをアーカイブすることは可能ですか?

ビューの状態を復元したいのですが、ビューに。がありUIPickerViewます。

UIPickerViewグラフィックコンポーネント、つまり背景のホイール画像があるように見えます。私はそれUIImageをアーカイブできないことを知っています。のような画像を含むものはすべて、エンコードする前にUIImageViewまず画像をに設定する必要があります。nil

ただし、準拠してUIPickerViewいます。NSCodingつまりencodeObject、動作するdecodeObjectはずです。

しかし、彼らはしません。つまり、エラーは発生しません。しかし、デコードした後、UIPickerView画像なしで取得します。見栄えが悪い!

これは、私が怒っていないことを証明するためのショットの前後です。

前

後

これで、現在のユーザー選択を保存し、ピッカーのメソッドを呼び出してビューを再作成できることがわかりましたselectRow。しかし、本当に、私は興味があります。UIPickerView NSCoding実際には準拠しておらず、背景のホイール画像を元に戻すためにこれ以上何もできないのに、なぜ準拠しているのですか?

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

iphone - カスタムクラスのサブクラスでのNSCodingの使用

NSCodingを使用して、データ永続性のメソッドとしてカスタムクラスをアーカイブ/アーカイブ解除しています。オブジェクトがNSObjectのサブクラスである場合は正常に機能しますが、カスタムオブジェクトのサブクラスであるオブジェクトもあります。initWithCoder:メソッドとencodeWithCoderを変更する必要がありますか?現在、サブクラスに固有のプロパティは正常にエンコード/デコードされますが、サブクラスがスーパークラスから継承するプロパティはそうではありません。何かご意見は?基本的な構造は次のとおりです。

およびサブクラス:

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

objective-c - カスタム初期化を使用したNSCoding

以下のようなカスタムinitメソッドを持つ「Defense」という名前のクラスがあります。

現在、クラスNSCodingを互換性のあるものにしています。これには、次の2つのメソッドが必要です。

通常、「防御」のインスタンスを割り当てるときは、次のようにコーディングします。

保存したDefenseオブジェクトのインスタンスを復元したい場合は、次のようにコーディングします。

initializeしかし、上記のコードでは、オブジェクトに非常に必要な「type」パラメーターと「mapref」パラメーターを渡すことができません。

Defenseクラスはから派生し、に準拠しCCSpriteCCSpriteいないため、私のメソッドNSCodingから呼び出すのは問題ありません。ただし、initWithFileに渡すファイル名を決定するためのパラメーターが必要です。(self = [super initWithFile:fileName])initWithCodertypeccsprite's

それで、私はこの状況で何をしますか?クラスのデザインを変更する必要がありますか?はいの場合、どのように?

良いアイデア/提案は大歓迎です...:)