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

iphone - iPhoneにjsonデータを保存する:json文字列をそのまま保存するVS jsonからオブジェクトを作成し、NSCoding+NSKeyedArchiverを使用する

私のiPhoneアプリケーションでは、リモートサーバーからjsonデータを取得し、Json Frameworkを使用して解析し、UIviewに表示します。また、オフラインで表示できるように、デバイスにデータを保存するオプションをユーザーに提供できるようにする必要があります。オブジェクトを作成してNSCoding+NSKeyedArchiverを使用して保存するよりも、jsonデータを直接保存する方が良いか悪いかを考えていました。json文字列をそのまま保存することの利点は、アーカイブされたオブジェクトよりもディスク上のスペースが少なくて済むことです。一方、アーカイブされたオブジェクトを保存することで、保存されたデータを毎回解析する必要がなくなります。より少ないメモリを使用します。

全体的に最良の選択はありますか?その問題に関するベストプラクティスはありますか?jsonファイルのサイズは約8KBです。

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

iphone - initWithCoder: nib と NSCoding によって呼び出されます!

わかりました、私は今 initWithCoder: を正しく動作させようとして多くの問題を抱えています。読み込まれる nib ファイルがあり、アプリ デリゲートで、その nib に関連付けられているビュー コントローラーに対して unarchiveWithFile: を呼び出すと、アプリがクラッシュします。ビュー コントローラーが NSCoding に準拠しているため、initWithCoder: が 2 回呼び出されていることがわかります。しかし、ビューが読み込まれるとすぐにクラッシュするか、IBOutlet を押すとクラッシュします。助言がありますか??

編集: initWithCoder のコードは次のとおりです。

私が行っているのは、マップ ビューの注釈の配列をデコードすることだけですが、このメソッドが 2 回呼び出されてクラッシュします。

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

java - JavaへのNSCoding

ねえ、

現在、NSCodingを使用してオブジェクトをデータに書き込み、Objective-cのファイルに保存しています。同じコーディングを使用してJavaアプリケーションのオブジェクト構造をデコードする方法があるかどうか誰かが知っていますか?

ありがとう

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

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ありますか?

アドバイスをいただければ幸いです。

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

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];

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

iphone - NSCodingを使用してユーザー編集可能なPlistを作成する

ユーザーが別のdata.plistから参照された文字列を含むカスタム作成されたワークアウトルーチンをアプリバンドルに保存できる、ユーザーが編集可能なplistを作成しようとしています。

NSCodingがこれを実現するための最良の方法だと思います。これまでのところ、インターフェイスはナビゲーションバーとテーブルビューとして設定されています。

デフォルトでは空白にしたいので、ユーザーはナビゲーションバーの右上にある「+」を押す必要があります。次に、胸の日や上腕二頭筋の日など、配列のエントリの名前を入力できます。そして、その配列内には、その日の特定のエクササイズの辞書または別の文字列の配列があります。たとえば、ベンチプレスや上腕二頭筋のカールです。

このplistは編集可能である必要があるため、アプリバンドルではなく、ユーザーのドキュメントフォルダーに配置されます。

例:

トップアレイは、チェストデイ、バックデイ、レッグデイで構成されています。チェストデイ辞書には、ベンチプレス、チェストプル、腕立て伏せなどが含まれます。

アップデート:

このメソッドを追加して、ルーチンファイルを検索します。

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

objective-c - UIView とそのサブビューのシリアル化/保存

私は比較的新しい iOS 開発者であり、以前の経験のほとんどは .NET からのものです。私のアプリケーションは、ユーザーがサブビューとして配置/サイズ変更/その他しているすべてのオブジェクトを含む親 UIView があるという点で、キャンバスのようなシステムです。これらの位置/構成を名前付きファイルに保存できるようにしたいと考えています。

.NET では、「タイトル」プロパティを指定して UIView をサブクラス化し、これをファイルにシリアル化し、逆シリアル化してロードし直していましたが、Cocoa ではかなり迷っています。

もともと私は NSCoding を使用してこれを行うことができると思っていましたが、これは複数のファイルを保存するための良い解決策ではないようです。

Core Data を調べたのですが、UIView のような既存の Cocoa UIKit クラスの Core Data オブジェクトを作成する方法がわかりません。

しばらくグーグルで調べましたが、この種の苦境に関する情報は見つかりません。何を使用する必要があり、それを行うための最良の方法は何ですか?

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

objective-c - UILocalNotifications と NSUserDefaults を使用して localNotifications を保存する

localNotificationsアプリがバックグラウンドに移行する前に、スケジュールをすべて保存したいと考えています。

localNotificationからすべてを取得し、次のUIApplicationように保存しようとします:

今、問題が発生します。

クラス 'UIConcreteLocalNotification' の非プロパティ値を挿入しようとしています。

my からローカル通知[UIApplication sharedApplication] scheduledLocalNotifications]を取得すると、 の配列を取得しUIConcreteLocalNotificationます。問題は、UILocalNotificationは準拠していますがNSCoding、このオブジェクトUIConcreteLocalNotificationは準拠していないことです。

どうすればこれを修正できますか?

0 投票する
4 に答える
1190 参照

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ますか、それとも私が見逃している他のアプローチを取る必要がありますか?

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

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」というコメント行にエラーが表示されます。助けてください...