問題タブ [nskeyedunarchiver]

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

ios - 削除中にファイルを解凍するとクラッシュする可能性はありますか?

例えば

そして、別の場所でremoveItemAtPathによってこのファイルを削除しようとしていますが、それが安全かどうか? アーカイバでファイルにオブジェクトを書き込んで、途中でオブジェクトを修正するとクラッシュするのは承知の上ですが、その本質がよくわからないので、このまま操作したらどうなるのだろうと思います。

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

swift - クラス名を上書きするための unarchiver デリゲートを実装する方法は?

  • IOS-App の 2 つのターゲットがあります: MYAPPTARGET_1 と MYAPPTARGET_2
  • MYAPPTARGET_1 は NSKeyedArchiver を使用して Stream を BLOB に書き込んでいます
  • MYAPPTARGET_2 は NSKeyedUnarchiver を使用して BLOB からストリームを読み取ります

MYAPPTARGET_2 で BLOB からストリームをアンアーカイブすると、次のエラーが発生します: 016-01-18 15:01:38.541 WorldHistoryAtlasTest[598:9405] * 例外がキャッチされていないためアプリを終了しています 'NSInvalidUnarchiveOperationException', reason: '* -[NSKeyedUnarchiver decodeObjectForKey:]: キー (rootobject) のクラス (MYAPPTARGET_1.MapTheme) のオブジェクトをデコードできません。

したがって、MYAPPTARGET_1 のプレフィックスで明らかにエンコードされているようで、MYAPPTARGET_2 からは読み取ることができません。

そのため、別の STACKOVERFLOW Answer でこれを克服するためのヒントを得て、デリゲート アンアーカイバーを使用してクラス名を上書きしました。しかし、私はこれを実装することができません:

targetname MYAPPTARGET_1 のアプリがあり、NSKeyedArchiver 機能を使用して一部のデータを blob として保存します。

その後、MYAPPTARGET_2 という名前の 2 番目の Apps-Target を使用して、データを再度読み取ろうとします。DBに格納されたBLOBから読み込みます。

誰かがこれについて実用的なヒントをくれたらとてもうれしいです。

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

ios - アーカイブされた値が存在しない場合は、getter をオーバーライドして NSUserDefaults から読み込みます

プロパティが設定されていない場合に、アーカイブされたクラスのコピーをロードするフォールバック関数を追加しようとしています。

セッターが値を保存するように正常に動作しています (そしてすべての NSCoding が期待どおりに動作しています) が、実際の変数プロパティを使用する代わりに、これを別の場所で参照しようとすると、常に NSUserDefaults から読み込まれます。

ここに私がこれまでに持っているものがあります:

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

ios - NSKeyedArchiver は以前のアーカイブ値を上書きしますか?

私はIOS Appデータのバックアップを行うために以下を使用しています

  • NSKeyedArchiver.archiveRootObject()
  • NSKeyedUnarchiver.unarchiveObjectWithFile()

ここのAppleのドキュメントに基づいて-

ここで、ばかげている可能性のある質問に興味がありました-新しい保存を行うたびに、以前のアーカイブは削除されますか?

質問

  • NSKeyedArchiver.archiveRootObject() を呼び出すと、新しいアーカイブは以前のアーカイブ値を上書きしますか?
  • 古い値を上書きしない場合、古い値を削除する必要がありますか?

NSKeyedArchiver 値の削除に関する便利なリファレンスを次に示します。

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

ios - 再起動後にアプリがクラッシュする

基本的に、アプリを閉じて再度開くたびに、履歴タブを開くとクラッシュします。NSUserDefaults の使い方のせいだと確信しています。誰でも私を案内できますか?

私が気づいたのは、再度開いた後に [履歴] タブが開くことがありますが、Nsuserdefaults に新しいエントリを追加するとクラッシュし、再度開いた後は正常に動作し、以前のエントリが表示されるか、すべてが削除されて新しいエントリが保持されることです。それだけ。

アプリをオフにすると、アレイが再起動されることに気付きました。それが、範囲外になるため、テーブルがクラッシュする理由です..

これは、配列の保存が行われる私の他のファイルです。

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

ios - NsUserDefualts が正しく機能しない

基本的に、tableView にはある種のバグがあります。tableView が常に正しく更新されていないことに気付きました。デバッグを試みたところ、テーブルを更新するために tableView クラスが常に呼び出されるわけではないことに気付きました。私は何を間違っていますか?テーブルに新しいエントリを追加すると、カウント 4 + 1 になり、履歴タブに移動しても何も起こらず、カウントはまだ 4 と表示されますが、タブをもう一度切り替えると、カウントは 5 と表示され、tableView は次のようになります。更新..何らかの理由で更新が遅れているため、更新ボタンを追加できますが、それはしたくありません..