問題タブ [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.
objective-c - Objective-C:NSCoding用に1つではなく2つのファイルを保存するようにするにはどうすればよいですか?
私のコードはここにあります:
指定されたfileKey(つまり「ボタン」)でファイルを1回保存すると機能しますが、指定されたfileKey(つまり「時計」)で別のファイルをディスクに保存したい場合は、「ボタン」が上書きされます。 「時計」が付いているので、「ボタンに再びアクセスすることはできません。
このジレンマを修正する方法は?「saveDataToDisk」(アーカイブ)の方法である必要があると思います。各ファイルを最新のファイルに置き換えるのではなく、大量のファイルをディスクに書き込む必要があります。
ios - カスタム変数を保存しないシリアル化されたビュー内に保存されたサブクラス化されたUILabel
だから、私はシリアル化されてファイルに保存されているビューを持っています。そのビュー内には、n個のサブクラス化されたUILabelがありますが、唯一の違いはライブプロパティです。UILabelサブクラス内にinitwithcoderとencodewithcoderがありますが、ラベル内でカスタム変数を取得できません。サブクラスのメソッドと以下を含めました。どんな助けでも大歓迎です。
カスタムUILabel:
中にラベルが含まれているビューをアーカイブ解除しているだけなので、iOSはカスタムラベルをアーカイブ解除しないと思いますか?
ありがとう
objective-c - NSCodingでエンコード/デコードが2倍になります
どうすればダブルで-[NSCoder encodeBytes:length:]
使用できますか?-[NSCoder decodeBytesWithReturnedLength:]
NSCoding
2つのdouble
プロパティに準拠するオブジェクトがあり、現在NSNumber
、値のエンコード/デコードに使用しています。
ただし、これは許容できないパフォーマンスをもたらします(テストデータでデコードするのに6秒かかります。これは、本番データよりもはるかに小さいです)。
キーを使用している場合は使用できますが、キーは使用-encodeDouble:forKey:
していません(低速です)。MacOSXとは異なり、-encodeDouble:
iOSには方法がありません。
だから、とを使う必要がありますencodeBytes:length:
がdecodeBytesWithReturnedLength:
、私のC能力はかなり限られています。void *
との間で変換する方法が正確にはわかりませんdouble
。
ios - NSCoding NSKeyedUnarchiver unarchiveObjectWithFile: null を返す
NSCoding を使用してアプリからいくつかの値を保存しようとしています。値を保存できますが、取得できません。
プロトコルを宣言する場所は次のとおりです。
プロトコルに準拠している場所は次のとおりです。
そしてここ:
ここで、アーカイブとアーカイブ解除を行うメソッドを呼び出します。
これらのメソッドの本体と NSLog の内容は次のとおりです。
アンアーカイバーのコードとその NSLog の内容は次のとおりです。
コンテンツを解凍できないということは、何が欠けていますか? テストするためだけに、エンコーダー/デコーダーメソッドの最も簡単な値に焦点を当てていますが、文字列値を機能させることさえできません。
ありがとう
ios - NSCoding v/s Sqlite
私はiOSアプリでsqliteデータベースからhtmlコンテンツを取得し、カスタムobjective-cオブジェクトを介してWebビューにロードしています。
sqlite からコンテンツをフェッチしないように、これらのカスタム オブジェクトに NSCoding を実装したいと考えています。
sqlite db からフェッチするよりも、NSCoding を使用する方がどれほど有益であるかについて、経験のある人はいますか?
前もって感謝します、
ios - NSCoding を使用した UIImageView のアーカイブ
私は以前に NSCoding を使用したことがなく、実装方法について非常に混乱しています。
現在の iPad アプリには、メイン ビュー コントローラーのプロパティである UIImageView (「背景」と呼ばれる) があります。「背景」には、UIImage の「画像」プロパティ (明らかに) と、ユーザーが追加したさまざまなサブビューがあります。追加されたサブビューは、UIImageView の独自のカスタム サブクラスです。
「バックグラウンド」 UIImageView の状態を保存できるようにして、アーカイブしたときと同じ画像とすべてのサブビューを元の場所に復元できるようにする必要があります。
UIImageView が NSCoding プロトコルに準拠していることは理解していますが、encodeWithCoder と initWithCoder を実装する場所がわかりません。メインのView Controllerからこれらを呼び出しますか? これらのメソッドをオーバーライドできる UIImageView のカテゴリを作成する必要がありますか?
「バックグラウンド」UIImageView とそのサブビューのすべてのプロパティをアーカイブするためのコードを記述する必要がありますか? UIImage は NSCoding に準拠していないため、UIImageView をアーカイブできるようにするには、サブクラス化するか、カテゴリを追加する必要があることを SO の他の場所で読みました。
すべてのプロパティ、サブビューなどを含むオブジェクトをディスクに保存する簡単な方法があると思いました。この「バックグラウンド」UIImageViewを保存して後で復元するには、多くのことを行う必要があるようです。やるべきことをすべて視覚化するのに苦労しています。どんなポインタでも大歓迎です!
objective-c - decodeObjectForKey を使用する際のretainCounts の意味:
私は奇妙な状況にあり、誰かが光を当ててくれることを願っています。カスタム オブジェクトにプロトコルを実装していNSCoding
ますが、 でメモリ リークが発生していinitWithCoder:
ます。私はこのようなものを持っています:
このオブジェクトには他にも多くのプロパティがあり、配列、文字列、プリミティブ (double、int) などがありますが、このメソッドでは一貫してメモリ リークが発生しています。decodeObjectForKey:
インスツルメンツは、ライン上の各デコードでリークが発生することを教えてくれます。10 個以上のオブジェクトの配列内の各カスタム クラス内のすべてのデコードされたオブジェクトをリークすると、メモリが増加し始めます。
しかし、本当に困惑したのは、このコードの出力:
は「3」です!
うわー、それらのすべての保持はどこから来ているのですか? 私を殴る。しかし、これらすべてのリークについて知りたいです。ありがとう!
iphone - decodeObjectForKey: 常に nil を返します
オブジェクト グラフをファイルに保存し、後で再読み込みしようとしていますが、decodeObjectForKey: は指定したキーに対して常に nil を返します。
バイナリ ファイルが作成され、そこにはときどき人間が読めるテキスト、つまり titleTextColor が含まれているので、アーカイブ プロセスは機能していると思います。
NSKeyedArchiver と NSKeyedUnarchiver の仕組みを誤解していませんか? どんな助けでも大歓迎です。
編集: DarkDust からのアドバイスに基づく:
テストするためだけに新しいインスタンスを作成します。
編集 - 更新 (float と int を NSNumbers としてエンコードする必要があります)