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

objective-c - Objective-C:NSCoding用に1つではなく2つのファイルを保存するようにするにはどうすればよいですか?

私のコードはここにあります:

指定されたfileKey(つまり「ボタン」)でファイルを1回保存すると機能しますが、指定されたfileKey(つまり「時計」)で別のファイルをディスクに保存したい場合は、「ボタン」が上書きされます。 「時計」が付いているので、「ボタンに再びアクセスすることはできません。

このジレンマを修正する方法は?「saveDataToDisk」(アーカイブ)の方法である必要があると思います。各ファイルを最新のファイルに置き換えるのではなく、大量のファイルをディスクに書き込む必要があります。

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

ios - カスタム変数を保存しないシリアル化されたビュー内に保存されたサブクラス化されたUILabel

だから、私はシリアル化されてファイルに保存されているビューを持っています。そのビュー内には、n個のサブクラス化されたUILabelがありますが、唯一の違いはライブプロパティです。UILabelサブクラス内にinitwithcoderとencodewithcoderがありますが、ラベル内でカスタム変数を取得できません。サブクラスのメソッドと以下を含めました。どんな助けでも大歓迎です。

カスタムUILabel:

中にラベルが含まれているビューをアーカイブ解除しているだけなので、iOSはカスタムラベルをアーカイブ解除しないと思いますか?

ありがとう

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

objective-c - NSCodingでエンコード/デコードが2倍になります

どうすればダブルで-[NSCoder encodeBytes:length:]使用できますか?-[NSCoder decodeBytesWithReturnedLength:]

NSCoding2つのdoubleプロパティに準拠するオブジェクトがあり、現在NSNumber、値のエンコード/デコードに使用しています。

ただし、これは許容できないパフォーマンスをもたらします(テストデータでデコードするのに6秒かかります。これは、本番データよりもはるかに小さいです)。

キーを使用している場合は使用できますが、キーは使用-encodeDouble:forKey:していません(低速です)。MacOSXとは異なり、-encodeDouble:iOSには方法がありません。

だから、とを使う必要がありますencodeBytes:length:decodeBytesWithReturnedLength:、私のC能力はかなり限られています。void *との間で変換する方法が正確にはわかりませんdouble

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

ios - NSCoding NSKeyedUnarchiver unarchiveObjectWithFile: null を返す

NSCoding を使用してアプリからいくつかの値を保存しようとしています。値を保存できますが、取得できません。

プロトコルを宣言する場所は次のとおりです。

プロトコルに準拠している場所は次のとおりです。

そしてここ:

ここで、アーカイブとアーカイブ解除を行うメソッドを呼び出します。

これらのメソッドの本体と NSLog の内容は次のとおりです。

アンアーカイバーのコードとその NSLog の内容は次のとおりです。

コンテンツを解凍できないということは、何が欠けていますか? テストするためだけに、エンコーダー/デコーダーメソッドの最も簡単な値に焦点を当てていますが、文字列値を機能させることさえできません。

ありがとう

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

ios - NSCoding v/s Sqlite

私はiOSアプリでsqliteデータベースからhtmlコンテンツを取得し、カスタムobjective-cオブジェクトを介してWebビューにロードしています。

sqlite からコンテンツをフェッチしないように、これらのカスタム オブジェクトに NSCoding を実装したいと考えています。

sqlite db からフェッチするよりも、NSCoding を使用する方がどれほど有益であるかについて、経験のある人はいますか?

前もって感謝します、

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

ios - NSCoding を使用した UIImageView のアーカイブ

私は以前に NSCoding を使用したことがなく、実装方法について非常に混乱しています。

現在の iPad アプリには、メイン ビュー コントローラーのプロパティである UIImageView (「背景」と呼ばれる) があります。「背景」には、UIImage の「画像」プロパティ (明らかに) と、ユーザーが追加したさまざまなサブビューがあります。追加されたサブビューは、UIImageView の独自のカスタム サブクラスです。

「バックグラウンド」 UIImageView の状態を保存できるようにして、アーカイブしたときと同じ画像とすべてのサブビューを元の場所に復元できるようにする必要があります。

UIImageView が NSCoding プロトコルに準拠していることは理解していますが、encodeWithCoder と initWithCoder を実装する場所がわかりません。メインのView Controllerからこれらを呼び出しますか? これらのメソッドをオーバーライドできる UIImageView のカテゴリを作成する必要がありますか?

「バックグラウンド」UIImageView とそのサブビューのすべてのプロパティをアーカイブするためのコードを記述する必要がありますか? UIImage は NSCoding に準拠していないため、UIImageView をアーカイブできるようにするには、サブクラス化するか、カテゴリを追加する必要があることを SO の他の場所で読みました。

すべてのプロパティ、サブビューなどを含むオブジェクトをディスクに保存する簡単な方法があると思いました。この「バックグラウンド」UIImageViewを保存して後で復元するには、多くのことを行う必要があるようです。やるべきことをすべて視覚化するのに苦労しています。どんなポインタでも大歓迎です!

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

objective-c - decodeObjectForKey を使用する際のretainCounts の意味:

私は奇妙な状況にあり、誰かが光を当ててくれることを願っています。カスタム オブジェクトにプロトコルを実装していNSCodingますが、 でメモリ リークが発生していinitWithCoder:ます。私はこのようなものを持っています:

このオブジェクトには他にも多くのプロパティがあり、配列、文​​字列、プリミティブ (double、int) などがありますが、このメソッドでは一貫してメモリ リークが発生しています。decodeObjectForKey:インスツルメンツは、ライン上の各デコードでリークが発生することを教えてくれます。10 個以上のオブジェクトの配列内の各カスタム クラス内のすべてのデコードされたオブジェクトをリークすると、メモリが増加し始めます。

しかし、本当に困惑したのは、このコードの出力:

は「3」です!

うわー、それらのすべての保持はどこから来ているのですか? 私を殴る。しかし、これらすべてのリークについて知りたいです。ありがとう!

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

iphone - decodeObjectForKey: 常に nil を返します

オブジェクト グラフをファイルに保存し、後で再読み込みしようとしていますが、decodeObjectForKey: は指定したキーに対して常に nil を返します。

バイナリ ファイルが作成され、そこにはときどき人間が読めるテキスト、つまり titleTextColor が含まれているので、アーカイブ プロセスは機能していると思います。

NSKeyedArchiver と NSKeyedUnarchiver の仕組みを誤解していませんか? どんな助けでも大歓迎です。

編集: DarkDust からのアドバイスに基づく:

テストするためだけに新しいインスタンスを作成します。

編集 - 更新 (float と int を NSNumbers としてエンコードする必要があります)