問題タブ [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.
ios - NSUserDefaults が iOS で NSMutableDictionary を保存できなかったのはなぜですか?
NSMutableDictionary
オブジェクトを に保存したいと思いますNSUserDefaults
。のキーの型NSMutableDictionary
はNSString
、値の型は ですNSArray
。これには、 を実装するオブジェクトのリストが含まれていますNSCoding
。ドキュメントごとにNSString
、NSArray
両方とも準拠していNSCoding
ます。
このエラーが発生しています:
[NSUserDefaults setObject: forKey:]: クラス NSCFDictionary の非プロパティ値を挿入しようとしています。
iphone - UIWebViewを含む コンテンツのエンコード/デコード
私の目的は、アプリの中断(たとえば、読み取られる着信SMS)を超えてWebセッションを継続することです。
アプローチA: 次のようにUIWebViewのコンテンツをNSUserDefaultsに保存しようとしました。
次に、次のように復元します。
ただし、内容は含まれていません。
アプローチB: UIWebViewのコンテンツを次の方法で取得しようとしました。
次に、それを保存し、再度取得して、UIWebViewで次のように設定しようとします。
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL
しかし、innerHTMLjavascriptはコンテンツ全体を返していません。
アイデア、提案などはありますか?
ios - NSCoding を使用して作成されたオブジェクト モデルをプログラムで読み込む
アプリケーションのバージョン 1.0 にはデータ モデルがあり、すべてのモデル クラスが NSCoding プロトコルに準拠しているため、NSKeyed(Un)Archiver クラスを使用して保存/ロードされます。次の階層が存在するとします。
このような方法で保存されたレガシー ファイルがあるとしますが、下位互換性のために、次の新しいデータ モデルを使用してアプリケーションのバージョン 2.0 にロードする必要があります。
明らかに、一部のデータが欠落しており、入力する必要があります。以前に存在した「居住者の数」ごとに、基本的な「占有者」オブジェクトを作成する必要があります。私が探しているのは、特に .m/.h ファイル自体ではなく、クラス/階層のリストしかない場合に、以前のデータ モデルをプログラムで読み込む方法です。
したがって、私がやりたいことは次のとおりです (Houses 配列を使用してシリアル化されたファイル Houses.data があると仮定します):
何か案は?
iphone - iPhone - UIImageView が NSCoding 準拠であるとドキュメントに記載されているのはなぜですか?
理想的には、NSCoding 準拠のクラスは、encodeWithCoder: と initWithCoder: を使用して期待どおりに動作します (少なくとも最近までそう思っていました) 開発者がルーチン内で何が起こっているかを気にする必要はありません (NSCoding 準拠のクラスに関する私の考えが完全に台無しにされない限り) !)
UIImageView クラスは NSCoding に準拠しています。したがって、NSKeyedArchiver および NSKeyedUnarchiver クラスを使用してシリアル化/逆シリアル化する方法を気にする必要はありません。しかし、UIImageView オブジェクトをエンコードしようとするたびに、UIImage が encodeWithCoder: メソッドを認識しないというエラーが発生します。
現在、UIImageView は内部的に UIImage オブジェクトを使用しています。しかし、エンコーディング自体がそれを処理するべきではなかったのでしょうか?
それとも、initWithCoder および encodeWithCoder メソッドを実装できることをユーザーに知らせるために、ドキュメントで NSCoding 準拠が指定されていますか?
誰かが私のためにこれを明確にしてもらえますか! 私は完全に混乱しています!
iphone - NSKeyedArchiver を使用した 2D C 配列の保存/読み込み
こんなマロック
これを使って。保存する前に、このように NSdata に変換します
NSdata にロードしてから変換して戻すint**
このコードを使用すると、*int
アドレスが保存され、データをロードすると正しいデータを指しなくなりますか? または、ドキュメントに記載されている「エンディアン」に問題がありますか?
アドレスの問題である場合、*int
NSData に変換するために保存するときに for ループを配置し、それらをすべて保存して**int
、別の for ループ/malloc で再作成する必要がありますか?
overriding - クラス変数、または少なくともobjective-c/cocoaの変数型をオーバーライドします
私のジレンマは次のとおりです。
UIImageのカスタムサブクラスがあり(いくつかのシリアル化メソッド、つまりinitWithCoder、encodeWithCoderを追加しました)、カスタムサブクラスを変数としてUIImageView、または少なくともUIImageViewのサブクラスに適用したいと思います。
ご存知のように、UIImageViewには、UIImageタイプの「image」という変数があります。この変数をサブクラスでオーバーライドしたいと思います。
私の目標は、encodeWithCoderメッセージが変数イメージに送信されてもクラッシュせずにarchivedDataWithRootObjectに応答するUIimageViewを作成することです。そこにたどり着くためのより賢い方法があれば、私は提案を受け入れます。
ありがとうございました!
[編集]考えられるルートの1つは、ある種のキャスティングを経由することだと思います...しかし:
2行目が実行された後にmlImageにマウスを合わせると、タイプがMLImageであることがわかります。ただし、キャストを使用しても、3行目が実行されると、mlImageはUIImageになります。画像の種類をMLImageに変更するにはどうすればよいですか?[/編集]
objective-c - CGPathRef エンコーディング
CGPathRef 変数をエンコードすることは可能ですか? CGPathRef 変数用の encodeObject:forKey のようなメソッドがあるということですか?
iphone - キーが長くなると、NSKeyedArchiverファイルが大幅に長くなります
iPhoneアプリのForObjectiveCencodeWithCoder:
クラスに入力すると、すべての変数に短いキーではなく長いキーを使用すると、アーカイブファイルが大きくなりますか?
たとえば、次のような非常に長いキーを使用する場合:
次のようなものを使用する場合よりもアーカイブファイルが長くなりますか?
私が多数のintとBOOLを持っていると仮定します。
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 も次のエラーを返します。
objective-c - Objective-c ブロックをエンコードしますか?
を使用して Objective-C ブロックをエンコードすることは可能NSKeyedArchiver
ですか?
Block オブジェクトがNSCoding
準拠しているとは思わないので、[coder encodeObject:block forKey:@"block"]
動作しませんか?
何か案は?