問題タブ [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 に答える
71 参照

ios - NSUserDefaults とアーカイバの取得の問題

で奇妙な問題が発生しましたNSArray。アプリは、異なる入力で 2 つのシナリオで同じ Web サービスをヒットする必要があります。1 つは初期状態で、サーバーからの応答がNSUserDefaultsの助けを借りて に保存されますNSKeyedArchiver。次は特定のアクションの完了時で、応答に基づいて格納された値NSUserDefaultsが変更されます。

以前に保存したデータを解凍しようとすると、6 つの ActiveOrder オブジェクトではなく@"6 objects"が出力されます。

上記の行を使用して、保存された値にアクセスして変更しています。実際のオブジェクトの代わりに @"6 objects" を出力している理由がとてもわかりません。そして、ランダムにクラッシュしています(これが理由であると推測しています)。私が間違っていることはありますかNSKeyedArchiver/NSKeyedUnarchiver

解決策を知っておいてよかったです。ありがとう!

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

ios - NSUserDefaults による今日の拡張機能でカスタム データを共有する

これは私の最初の投稿です。

カスタム オブジェクトの配列を NSuserDefauls を介して Today 拡張機能と共有しようとしています。

カスタム オブジェクトを NSUserdefaults に配置できないことはわかっているので、NSKeyedArchiver - NSKeyedUnarchiver でコーディングして NSData に変換しました。

これは私のカスタムクラスです

アプリ内のコーディング機能です。

この時点でログを見ると、データは NSUserDefaults に書き込まれているようです

そしてここで、拡張機能のデータを取得しようとしています

拡張機能を実行しようとすると、エラーは表示されず、空の配列だけが表示されます。特にNSArray *dummyArray = [defaultArray arrayForKey:@"counts"];空っぽいので、どこかデータが流れていません。

私が間違っていることは何ですか??

あらゆる種類のヒントをいただければ幸いです。

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

ios - カスタム クラス オブジェクトを Swift の NSUserDefaults に保存する

いくつかのオブジェクトを配列に保存しようとしていますが、オブジェクトは継承されたプロパティを使用していますが、オブジェクトを読み込もうとすると、

構造は

このように、このコードを使用しています

そして、これはクラス関数です

-私の問題は、Servicio から継承する Service1 にあります。

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

swift - ジェネリックを使用した Swift でのカスタム オブジェクトのアーカイブ解除

NSData を NSUserDefaults からカスタム オブジェクトにアーカイブ解除するためのコードを作成しようとしていますが、これまでのところ -

残念ながら、ゴミを返します。アーカイブ解除の時点でクラス型の T を切り替えると、オブジェクトは正しく作成されます -

しかし、明らかにこれはジェネリックの目的を無効にします。

ヘルプなど、大歓迎です

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

objective-c - 名前が変更された Core Data Transformable

CoreDataアプリでオフライン ストレージを管理するために使用しています。NSObjectオフラインストレージのデータは、変形可能としてカスタムに保存されxcdatamodelます。

アプリの現在のバージョン ( v1.0 ) はNavigationクラスを保存しています。

Navigationコードベースの別のターゲットでの名前空間の問題に対処するために、クラスの名前を変更する必要がありました。

CoreDataバージョン 2.0 では、ストアを検索しているときにクラスNSKeyedUnarchiverが見つからないために失敗するため、アプリがクラッシュします。Navigation

CoreDataこの問題に対処するために現在のストアを移行する最善の方法は何ですか?

私はこのようなことを試しました:

例外をキャッチし、ObjectID のみをフェッチして、ストア内の破損したデータを削除するのは賢明だと思います。しかし、うまくいきません…</p>

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

ios - 有効なデータ オブジェクトを渡しても NSKeyedUnarchiver でデコードすると NSDictionary が nil になる

コアデータの下に以下のコードを含む NSKeyedArchiver を使用して NSDictionary オブジェクトを保存しています。

キー @"voterExtraInfo" で同じ辞書を取得すると、NSDictionary は nil を示しています。私の検索コードは

提案してください。これが私が保存しているdictです。

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

ios - ローカル ファイルからロードされた UIImageView の表示に長い遅延がありますか?

ダウンロード後の UIImageViews の表示に長い遅延があるという質問をよく見かけますが、私の質問には、ローカル ストレージからの読み取りに長い遅延が伴います。

UIImageViews の階層をローカル ファイルにアーカイブした後 ( ビュー階層とコンテンツをファイルに出力する方法の narohi の回答に従って)、それらをリロードする場合、ビューが実際に表示されるまでに 5 ~ 20 秒かかることがわかりました。メインビューとすべてのサブビューで setNeedsDiplay() を設定しているにもかかわらず、画面に表示されます。

読み込まれた UIView のカスタム サブクラスに含まれるデータをすぐにクエリできます。NSKeyedUnarchiver とすべての NS デコードとすべての init() が完了したことを示していますが、画像は画面に表示されません。長い間。次の再描画サイクルは 5 ~ 20 秒よりも短いのではないでしょうか?

PhotoLibrary からの画像がすぐに表示されるのは奇妙に思えますが、NSKeyedUnarchiver を使用してローカル ファイル ストレージから読み込まれたものはすべて「永久に」かかります。

ここで何が起こっているのか、どうすればこれをスピードアップできますか?

.

.

明確にするために、私の Swift コードの関連部分は次のようになります。

のようなものを追加しても、私はそれを見つけます...

...それは操作をスピードアップしません。

巨大なデータセットについても話しているわけではありません。リロードされているのは、単一のイメージビューである可能性があります。

ここで、 https://stackoverflow.com/a/28221670/4259243に示されているようなダウンローダーを使用してインターネットからダウンロードするときにこれらの遅延が発生していることにも気付きました ...しかし、ダウンローダーに完了メッセージを出力させるだけでなくダウンロードですが、(同期操作)data.writeToFile()が完了したとき(およびNSKeyedUnarchiverを使用してロードしようとする前)、これは、ダウンロードがまだ開始されているため、UIImageViewの再描画の遅延がそうではないことを示しています....そして私が言うように、データのプロパティを照会することができ、それはすべてメモリ内にあり、画面には表示されません。

更新: コメントに従って、Leo Dabus のアドバイスに従って、needsDisplay コードを dispatch_async に同封し、Paulw11 に従っていくつかの時間プロファイリングを行いました。タイムプロファイリング の結果へのリンクはこちら: https://i.imgur.com/sa5qfRM.png 20代。その間、何事も無さそう…?コードは文字通りしばらく待っているだけですか?

私がどのようにdispatch_asyncを実装しているかを明確にするために、ここを参照してください:

...これを投稿して以来、人々が NSKeyedUnarchiver の遅さについて不平を言っている投稿をいくつか見つけました。それだけでしょうか?もしそうなら、 :-(。

2番目の更新:ああ、「let view =」はdispatch_asyncにある必要があります。実際、すべてをdispatch_asyncに入れるだけで、見事に動作します! それで...

これは即座に機能します。うわー.. Leo Dabusの功績。これは他の人のためにここに残します...

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

ios - NSKeyedArchiver が例外エラーでアプリをクラッシュさせる

NSCoding と NSKeyedArchiver を使用して、ドキュメント フォルダーに画像を保存しようとしています。アプリは次のように機能します。ユーザーは写真を撮り、プレビューを見て、画像を保存し、ギャラリー セクションで画像を見ることができます。複数の画像を同時に保存しません。

クラッシュが発生し、画像のアーカイブが間違っているのか、写真クラスの設定が不適切なのか、アーカイブ解除のコードが間違っているのかわかりません。最終的には、オブジェクトを取得し、それらを使用してコレクション ビューを作成する必要があります。

コードを呼び出してオブジェクトをロードすると、次のようなクラッシュが発生します

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ImageForArchiving countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x174232da0' *** First throw call stack: (0x18533c22c 0x196fb00e4 0x1853432f4 0x1853400a8 0x18524296c 0x10001aefc 0x189ded1ec 0x189dd62c8 0x189decb88 0x189dec814 0x189de5d50 0x189db8f74 0x18a05a124 0x189db7488 0x1852f3f8c 0x1852f3230 0x1852f12e0 0x18521cf74 0x18ec7f6fc 0x189e1ed94 0x10001840c 0x19765aa08) libc++abi.dylib: terminating with uncaught exception of type NSException

私のサブクラスコードは次のようになります。ImageForArchiving は NSCoder プロトコルに準拠しています。

ImageForArchiving.h

@終わり

ImageForArchiving.m

アーカイブ用のコードは、ユーザーが写真を撮った後に表示するプレビュー VC にあります。ブロックでセグエからポップされたモーダルとして表示されます。

PreviewViewController.m (画像 IBAction を保存)

ファイルパスの作成

画像を保存する

画像の読み込み - ここでクラッシュが発生します

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

ios - NSKeyedUnarchiver は、後続のアプリの起動後に nil を返します

EDIT:ファイルパス、アーカイブおよびアーカイブ解除用のコードをチェックおよび再チェックしましたが、バグは見つかりませんでした。私が認識していない起動間のアプリ ファイル システムに関する問題はありますか?

NSCoder を使用してアプリに画像を保存しています。一意のファイル パスを作成し、そのファイル パスを Core Data に保存し、ドキュメント内の同じファイル パスを使用して画像をアーカイブします。

アプリを最初に起動すると、すべてが期待どおりに機能します。コア データに保存されたファイル パスを使用して、ドキュメントに保存されている画像が解凍されます。ただし、その後の起動では、una​​rchiver は nil を返し、クラッシュします。

ImageForArchiving.m - init および encode メソッドで保存されるオブジェクト

アーカイブへの保存、Core Data、ファイル パスの作成、およびコードのアーカイブ解除

コア データ配列をループしてデータ ソースをロードします。未公開物件の追加はw