問題タブ [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.
iphone - iPhoneにjsonデータを保存する:json文字列をそのまま保存するVS jsonからオブジェクトを作成し、NSCoding+NSKeyedArchiverを使用する
私のiPhoneアプリケーションでは、リモートサーバーからjsonデータを取得し、Json Frameworkを使用して解析し、UIviewに表示します。また、オフラインで表示できるように、デバイスにデータを保存するオプションをユーザーに提供できるようにする必要があります。オブジェクトを作成してNSCoding+NSKeyedArchiverを使用して保存するよりも、jsonデータを直接保存する方が良いか悪いかを考えていました。json文字列をそのまま保存することの利点は、アーカイブされたオブジェクトよりもディスク上のスペースが少なくて済むことです。一方、アーカイブされたオブジェクトを保存することで、保存されたデータを毎回解析する必要がなくなります。より少ないメモリを使用します。
全体的に最良の選択はありますか?その問題に関するベストプラクティスはありますか?jsonファイルのサイズは約8KBです。
iphone - initWithCoder: nib と NSCoding によって呼び出されます!
わかりました、私は今 initWithCoder: を正しく動作させようとして多くの問題を抱えています。読み込まれる nib ファイルがあり、アプリ デリゲートで、その nib に関連付けられているビュー コントローラーに対して unarchiveWithFile: を呼び出すと、アプリがクラッシュします。ビュー コントローラーが NSCoding に準拠しているため、initWithCoder: が 2 回呼び出されていることがわかります。しかし、ビューが読み込まれるとすぐにクラッシュするか、IBOutlet を押すとクラッシュします。助言がありますか??
編集: initWithCoder のコードは次のとおりです。
私が行っているのは、マップ ビューの注釈の配列をデコードすることだけですが、このメソッドが 2 回呼び出されてクラッシュします。
java - JavaへのNSCoding
ねえ、
現在、NSCodingを使用してオブジェクトをデータに書き込み、Objective-cのファイルに保存しています。同じコーディングを使用してJavaアプリケーションのオブジェクト構造をデコードする方法があるかどうか誰かが知っていますか?
ありがとう
xcode - XCode/iOS: NSCoding - 共通オブジェクトの 2 つの配列を持つオブジェクト グラフの永続性
ベアボーン形式で次のような 2 つのクラスがあります。
NSCoding を実装するタイプ GraphEdge のオブジェクトである NSMutableArray をエンコード/デコードするという同じ動作を表現しているように見えることに気付くでしょう。実際のクラスの違いは、GraphEdges がそのプロパティでエッジを作成するのに対し、GraphNode はGraphEdges.edges の既存の GraphEdge インスタンスへの参照のみをedges
独自に追加することです。edges
edges
私の問題は、各クラスが各クラスのプロパティに格納されている元の GraphEdge オブジェクトの独自のバージョンを作成するため、GraphNode および GraphEdges オブジェクトをデコードするときにオブジェクト グラフが維持されないことです。
GraphEdgesのエンコードを無条件に保ちながら、GraphNodeのNSMutableArray *edges全体でencodeConditionalObjectを実行しようとしましたが、当然のことながら、条件はオブジェクトではなく配列自体に配置されるため、これは単にGraphNode.edgesのエンコードに失敗します。
どちらの場合も配列を反復処理し、GraphNode の各メンバーに対して条件付きエンコーディングを実行しますedges
が、GraphEdges の各メンバーに対して無条件エンコーディングを実行するソリューションはedges
ありますか?
アドバイスをいただければ幸いです。
iphone - nscodingに準拠するオブジェクトはファイルに書き込みません
質問オブジェクトの配列をファイルに書き込みたいのですが、どういうわけかwriteToFileは何もしていません。質問には、所有者と回答オブジェクトの配列があります。Answerには所有者もいます。3つすべてがNSCodingプロトコルに準拠しています(私が知る限り)。
以下のコードから、結果はNOを返します。私はすべてにNSCodingを実装しているので、私が間違っていることの手がかりはありませんよね?
Question.h
Question.m
Answer.h
Answer.m
Owner.h
Owner.m
関連するコード行
BOOL result = [questions writeToFile:@"Users/brunoscheele/Desktop/questions.plist" atomically:YES];
iphone - NSCodingを使用してユーザー編集可能なPlistを作成する
ユーザーが別のdata.plistから参照された文字列を含むカスタム作成されたワークアウトルーチンをアプリバンドルに保存できる、ユーザーが編集可能なplistを作成しようとしています。
NSCodingがこれを実現するための最良の方法だと思います。これまでのところ、インターフェイスはナビゲーションバーとテーブルビューとして設定されています。
デフォルトでは空白にしたいので、ユーザーはナビゲーションバーの右上にある「+」を押す必要があります。次に、胸の日や上腕二頭筋の日など、配列のエントリの名前を入力できます。そして、その配列内には、その日の特定のエクササイズの辞書または別の文字列の配列があります。たとえば、ベンチプレスや上腕二頭筋のカールです。
このplistは編集可能である必要があるため、アプリバンドルではなく、ユーザーのドキュメントフォルダーに配置されます。
例:
トップアレイは、チェストデイ、バックデイ、レッグデイで構成されています。チェストデイ辞書には、ベンチプレス、チェストプル、腕立て伏せなどが含まれます。
アップデート:
このメソッドを追加して、ルーチンファイルを検索します。
objective-c - UIView とそのサブビューのシリアル化/保存
私は比較的新しい iOS 開発者であり、以前の経験のほとんどは .NET からのものです。私のアプリケーションは、ユーザーがサブビューとして配置/サイズ変更/その他しているすべてのオブジェクトを含む親 UIView があるという点で、キャンバスのようなシステムです。これらの位置/構成を名前付きファイルに保存できるようにしたいと考えています。
.NET では、「タイトル」プロパティを指定して UIView をサブクラス化し、これをファイルにシリアル化し、逆シリアル化してロードし直していましたが、Cocoa ではかなり迷っています。
もともと私は NSCoding を使用してこれを行うことができると思っていましたが、これは複数のファイルを保存するための良い解決策ではないようです。
Core Data を調べたのですが、UIView のような既存の Cocoa UIKit クラスの Core Data オブジェクトを作成する方法がわかりません。
しばらくグーグルで調べましたが、この種の苦境に関する情報は見つかりません。何を使用する必要があり、それを行うための最良の方法は何ですか?
objective-c - UILocalNotifications と NSUserDefaults を使用して localNotifications を保存する
localNotifications
アプリがバックグラウンドに移行する前に、スケジュールをすべて保存したいと考えています。
localNotification
からすべてを取得し、次のUIApplication
ように保存しようとします:
今、問題が発生します。
クラス 'UIConcreteLocalNotification' の非プロパティ値を挿入しようとしています。
my からローカル通知[UIApplication sharedApplication] scheduledLocalNotifications]
を取得すると、 の配列を取得しUIConcreteLocalNotification
ます。問題は、UILocalNotification
は準拠していますがNSCoding
、このオブジェクトUIConcreteLocalNotification
は準拠していないことです。
どうすればこれを修正できますか?
objective-c - NSData および NSCoding を使用した iOS カスタム ファイル形式の読み込み
メモリ内で使用するモデル オブジェクトにカスタム ファイル形式をロードして解析するメカニズムを実装する方法について、一部の iOS Cocoa プログラマーからのガイダンスを探しています。この問題を解決するには多くの方法があるに違いないことは承知していますが、私が探求した現在の道の基本的な考え方と、行き詰まった場所を共有させてください。
しかし、最初に、コンテキストを示します。変更できない既存のファイル形式があるとします。これは基本的に、パイプで区切られたエキゾチックな形式で、さまざまなセクションに分かれており、それぞれが次のように始まります。
...そして、それに続く n 行はすべて、そのセクションに固有の方法でパイプで区切られています。一部のセクションにはパイプで区切られたヘッダー行があり、その後に n 行のデータ (これもパイプで区切られています) が続き、他のセクションにはパイプで区切られた n 行しかない場合があります。ファイルの先頭に向かっていくつかの短いセクションがあり、最後に k-ary ツリーのノードを説明する 1 つの巨大なセクションがあります: それらの親子関係と各ノードに関連付けられたデータです。これらのファイルのサイズは数十メガバイトで、将来的にはさらに大きくなる可能性があります。
最後に、私は iOS プログラミングにかなり慣れていないということです。
を使用NSFileHandle
して、ファイルの表現を のインスタンスとして取得することから始めましたNSData
。これは非常に簡単で、NSData
インターフェイスを調べてそこから先に進む方法を試してみると、NSCoding
プロトコルに気付きました。これは、オブジェクトを表現に (および表現から) アーカイブおよびシリアル化するための機能であると主張しています。
ファイル形式は、モデル オブジェクトをマーシャリングできる単なる表現であると考える傾向があるため、これは必要かもしれないと思いました。しかし、「Archives and Serializations Programming Guide」を掘り下げた後、私は自分自身を推測し始めました。この API は、私が達成しようとしていることに役立たないようです。
私はここで袋小路を下っていますか?代わりにサブクラス化しようとする必要がありNSInputStream
ますか、それとも私が見逃している他のアプローチを取る必要がありますか?
xcode - NSKeyedArchiver でカスタム クラスをエンコードおよびデコードする方法
保存してロードしたいカスタムクラスがあります。このクラスには、NSDate、NSString、および NSNumber が含まれています。NSCoding プロトコルを .h ファイルに実装しました。ここに私がこれまでに持っているコードがあります。theDate は NSDate です。theName は NSString です。homeAway は NSNumber です。
以下のコードを使用して、カスタム オブジェクトをロードしています。デバッガーで print-object を使用すると、homeAway のみが実際のオブジェクトとして表示されます。theDate と theName は、0x4e4f150 が有効なオブジェクトを指していないようです。
次のコードを使用してデータを保存します。
これを使用してクラスを呼び出し、新しいゲーム (保存しようとしているカスタム クラス) を作成します。NSDateまでのコード *aDate = [gameDate date]; は関係ありません。
}
そのメソッドから newGame メソッドを呼び出します。
オブジェクトが保存されないのはなぜですか? オブジェクトのコピーはそれと関係がありますか? 「exc bad access」というコメント行にエラーが表示されます。助けてください...