問題タブ [nscoder]

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 に答える
890 参照

ios - Swift 1.2 の enum のエンコードとデコード

Swift クラスにがenumあり、変数が宣言されています。を使用してエンコードおよびデコードする必要がありNSCoderます。を使うべきだと言っていることについて、多くの質問がありますrawValueEnum次のように宣言されます。

しかし、Swift 1.2 にはそのような初期化子はありません。Swift 1.2 と Xcode 6.3 でそれを行うにはどうすればよいですか?

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

ios - カスタム クラス オブジェクトを Swift の NSUserDefaults に保存する

いくつかのオブジェクトを配列に保存しようとしていますが、オブジェクトは継承されたプロパティを使用していますが、オブジェクトを読み込もうとすると、

構造は

このように、このコードを使用しています

そして、これはクラス関数です

-私の問題は、Servicio から継承する Service1 にあります。

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

objective-c - 名前が変更された Core Data Transformable

CoreDataアプリでオフライン ストレージを管理するために使用しています。NSObjectオフラインストレージのデータは、変形可能としてカスタムに保存されxcdatamodelます。

アプリの現在のバージョン ( v1.0 ) はNavigationクラスを保存しています。

Navigationコードベースの別のターゲットでの名前空間の問題に対処するために、クラスの名前を変更する必要がありました。

CoreDataバージョン 2.0 では、ストアを検索しているときにクラスNSKeyedUnarchiverが見つからないために失敗するため、アプリがクラッシュします。Navigation

CoreDataこの問題に対処するために現在のストアを移行する最善の方法は何ですか?

私はこのようなことを試しました:

例外をキャッチし、ObjectID のみをフェッチして、ストア内の破損したデータを削除するのは賢明だと思います。しかし、うまくいきません…</p>

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

ios - NSCoder Swift による配列のコーディング

NSCoder を実装しようとしていますが、現在、頑固な問題に直面しています。私の目標は、NSCoder を介して文字列の配列をローカル ファイルに保存し、次回アプリを開いたときに読み込むことです。

作成したクラスは次のとおりですが、init およびエンコーダー関数をどのように処理すればよいかわかりません。

}

さらに、View Controllerでアクセスするにはどうすればよいですか? NSCoder を保存するためのパスはどこで宣言すればよいですか? それは本当に十分に明確ではありません。

アドバイスをお待ちしております。

ありがとうございました。

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

ios - NSKeyedUnarchiver は、後続のアプリの起動後に nil を返します

EDIT:ファイルパス、アーカイブおよびアーカイブ解除用のコードをチェックおよび再チェックしましたが、バグは見つかりませんでした。私が認識していない起動間のアプリ ファイル システムに関する問題はありますか?

NSCoder を使用してアプリに画像を保存しています。一意のファイル パスを作成し、そのファイル パスを Core Data に保存し、ドキュメント内の同じファイル パスを使用して画像をアーカイブします。

アプリを最初に起動すると、すべてが期待どおりに機能します。コア データに保存されたファイル パスを使用して、ドキュメントに保存されている画像が解凍されます。ただし、その後の起動では、una​​rchiver は nil を返し、クラッシュします。

ImageForArchiving.m - init および encode メソッドで保存されるオブジェクト

アーカイブへの保存、Core Data、ファイル パスの作成、およびコードのアーカイブ解除

コア データ配列をループしてデータ ソースをロードします。未公開物件の追加はw

0 投票する
0 に答える
88 参照

objective-c - initWithCoder と encodeWithEncoder 地獄。これは単純化できますか?

それぞれ数十のプロパティを持つ数十のモデルがあり、すべてNSCoderプロトコルとを使用してディスクに保存できるNSKeyed(Un)archiverため、iOS アプリケーションのモデルを作成して維持するのは大変な作業です。1 つのモデルに多数のプロパティがあるため、次のことを行う必要があります。

  1. 多数のプロパティを定義します(どこかに定義する必要があるため、これで問題ありません)

  2. メソッドinitWithCoder:を入力します。これは、プロパティ名 (または定数キー) を入力/コピーして貼り付ける 12 行と 20 回です。3) いくつかはencodeWithCoder:.

間違い (入力、コピー、変更 (または変更しない)のいずれか) のリスクは非常encodeObject:encodeInteger:大きいです。その上、それは単純に多くの手作業であり、私はやりたくないのです。我ら。

まずは作業の簡素化などを検討しました。このようなもの:

しかし、それはまだ大変な作業です。これはもっと簡単にできませんか?イントロスペクションなどを使用して実行時にこれを行うことは好みません。

モデルファイルを生成/操作してXcodeに追加するPythonスクリプトについて考えています。これは、何らかの JSON 記述ファイルに基づいている可能性があります。

ビルド前の段階で Xcode がこれを自動的に実行するようにすると、すばらしいでしょう。つまり、すべてのモデルとすべてのプロパティを一度に定義し、エンコード/デコードするのを忘れた間違いやプロパティについて心配する必要がない単一の場所を意味します。

そのようなものはありますか?読めないAppleの「XML」プロジェクトファイルを台無しにすることなく、Xcodeプロジェクトにファイルを追加する方法はありますか? そして、ターゲットにヘッダーを含めることはどうですか..または、すべての作業を節約するための他の優れた方法でしょうか?

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

swift2 - Swift で WatchConnectivity / encoding を使用してカスタム オブジェクトの配列を転送する

カスタム オブジェクトの配列を iOS から watchkitextension に転送しようとしています。

そのためには、データをエンコードする必要があることを理解しました。デコード時にエラーが発生していますが。

どうぞ:

カスタム オブジェクト:

配列を持つクラス:

サンプル オブジェクトを作成し、配列に追加してからエンコードします。

そして、ここで「実行が中断されました-理由信号SIGABRT」というエラーが表示されます