問題タブ [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 投票する
6 に答える
76904 参照

ios - NSUserDefaults が iOS で NSMutableDictionary を保存できなかったのはなぜですか?

NSMutableDictionaryオブジェクトを に保存したいと思いますNSUserDefaults。のキーの型NSMutableDictionaryNSString、値の型は ですNSArray。これには、 を実装するオブジェクトのリストが含まれていますNSCoding。ドキュメントごとにNSStringNSArray両方とも準拠していNSCodingます。

このエラーが発生しています:

[NSUserDefaults setObject: forKey:]: クラス NSCFDictionary の非プロパティ値を挿入しようとしています。

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

iphone - UIWebViewを含む コンテンツのエンコード/デコード

私の目的は、アプリの中断(たとえば、読み取られる着信SMS)を超えてWebセッションを継続することです。

アプローチA: 次のようにUIWebViewのコンテンツをNSUserDefaultsに保存しようとしました。

次に、次のように復元します。

ただし、内容は含まれていません。

アプローチB: UIWebViewのコンテンツを次の方法で取得しようとしました。

次に、それを保存し、再度取得して、UIWebViewで次のように設定しようとします。

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL

しかし、innerHTMLjavascriptはコンテンツ全体を返していません。

アイデア、提案などはありますか?

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

ios - NSCoding を使用して作成されたオブジェクト モデルをプログラムで読み込む

アプリケーションのバージョン 1.0 にはデータ モデルがあり、すべてのモデル クラスが NSCoding プロトコルに準拠しているため、NSKeyed(Un)Archiver クラスを使用して保存/ロードされます。次の階層が存在するとします。

このような方法で保存されたレガシー ファイルがあるとしますが、下位互換性のために、次の新しいデータ モデルを使用してアプリケーションのバージョン 2.0 にロードする必要があります。

明らかに、一部のデータが欠落しており、入力する必要があります。以前に存在した「居住者の数」ごとに、基本的な「占有者」オブジェクトを作成する必要があります。私が探しているのは、特に .m/.h ファイル自体ではなく、クラス/階層のリストしかない場合に、以前のデータ モデルをプログラムで読み込む方法です。

したがって、私がやりたいことは次のとおりです (Houses 配列を使用してシリアル化されたファイル Houses.data があると仮定します):

何か案は?

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

iphone - iPhone - UIImageView が NSCoding 準拠であるとドキュメントに記載されているのはなぜですか?

理想的には、NSCoding 準拠のクラスは、encodeWithCoder: と initWithCoder: を使用して期待どおりに動作します (少なくとも最近までそう思っていました) 開発者がルーチン内で何が起こっているかを気にする必要はありません (NSCoding 準拠のクラスに関する私の考えが完全に台無しにされない限り) !)

UIImageView クラスは NSCoding に準拠しています。したがって、NSKeyedArchiver および NSKeyedUnarchiver クラスを使用してシリアル化/逆シリアル化する方法を気にする必要はありません。しかし、UIImageView オブジェクトをエンコードしようとするたびに、UIImage が encodeWithCoder: メソッドを認識しないというエラーが発生します。

現在、UIImageView は内部的に UIImage オブジェクトを使用しています。しかし、エンコーディング自体がそれを処理するべきではなかったのでしょうか?

それとも、initWithCoder および encodeWithCoder メソッドを実装できることをユーザーに知らせるために、ドキュメントで NSCoding 準拠が指定されていますか?

誰かが私のためにこれを明確にしてもらえますか! 私は完全に混乱しています!

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

iphone - NSKeyedArchiver を使用した 2D C 配列の保存/読み込み

こんなマロック

これを使って。保存する前に、このように NSdata に変換します

NSdata にロードしてから変換して戻すint**

このコードを使用すると、*intアドレスが保存され、データをロードすると正しいデータを指しなくなりますか? または、ドキュメントに記載されている「エンディアン」に問題がありますか?

アドレスの問題である場合、*intNSData に変換するために保存するときに for ループを配置し、それらをすべて保存して**int、別の for ループ/malloc で再作成する必要がありますか?

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

overriding - クラス変数、または少なくともobjective-c/cocoaの変数型をオーバーライドします

私のジレンマは次のとおりです。

UIImageのカスタムサブクラスがあり(いくつかのシリアル化メソッド、つまりinitWithCoder、encodeWithCoderを追加しました)、カスタムサブクラスを変数としてUIImageView、または少なくともUIImageViewのサブクラスに適用したいと思います。

ご存知のように、UIImageViewには、UIImageタイプの「image」という変数があります。この変数をサブクラスでオーバーライドしたいと思います。

私の目標は、encodeWithCoderメッセージが変数イメージに送信されても​​クラッシュせずにarchivedDataWithRootObjectに応答するUIimageViewを作成することです。そこにたどり着くためのより賢い方法があれば、私は提案を受け入れます。

ありがとうございました!

[編集]考えられるルートの1つは、ある種のキャスティングを経由することだと思います...しかし:

2行目が実行された後にmlImageにマウスを合わせると、タイプがMLImageであることがわかります。ただし、キャストを使用しても、3行目が実行されると、mlImageはUIImageになります。画像の種類をMLImageに変更するにはどうすればよいですか?[/編集]

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

objective-c - CGPathRef エンコーディング

CGPathRef 変数をエンコードすることは可能ですか? CGPathRef 変数用の encodeObject:forKey のようなメソッドがあるということですか?

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

iphone - キーが長くなると、NSKeyedArchiverファイルが大幅に長くなります

iPhoneアプリのForObjectiveCencodeWithCoder:クラスに入力すると、すべての変数に短いキーではなく長いキーを使用すると、アーカイブファイルが大きくなりますか?

たとえば、次のような非常に長いキーを使用する場合:

次のようなものを使用する場合よりもアーカイブファイルが長くなりますか?

私が多数のintとBOOLを持っていると仮定します。

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

objective-c - アーカイブ/アーカイブ解除の結果、initForReadingWithData が理解できないアーカイブになる

セーブオンapplicationWillTerminateとロードオンを実装しましたapplicationWillFinishLoading。完全なオブジェクト ツリーがあり、すべてがNSCodingプロトコルを実装しており、入力した型を確認しました。

クラスの 1 つには to も保存NSMutableDataされていNSKeyedArchiveます。奇妙なことに、うまくいくこともあれば、うまくいかないこともあります。NSMutableDataの一部のコンテンツがアーカイブを壊すと思われます。

正しい対応するメソッドを使用する bools と int を除いて、すべてのオブジェクトで encodeObject を使用します (encodeBool:forKey:およびencodeInt:forKey:)

より明確にするために、コードは実際に機能します。常にではなく、かなり完全なオブジェクトグラフを再構築できる場合があります。

私が得るエラーメッセージは次のとおりです。

追加: 失敗しているコードNSMutableData、10 MB 以上のコード

self.data のエンコードとデコードを削除すると、常に機能しているように見えます。小さいサイズの self.data でも失敗します。サイズじゃなくて中身の問題?

nsmutabledata を書き込んだときにファイルを開こうとすると、適切なリスト エディターに次のエラーが表示されます。

plutil も次のエラーを返します。

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

objective-c - Objective-c ブロックをエンコードしますか?

を使用して Objective-C ブロックをエンコードすることは可能NSKeyedArchiverですか?

Block オブジェクトがNSCoding準拠しているとは思わないので、[coder encodeObject:block forKey:@"block"]動作しませんか?

何か案は?