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

objective-c - 色付きの「カテゴリ」の ColorWell

、列「カテゴリ」を持つ、NSTextField、およびカスタム アレイ コントローラがあります。NSTableViewNSColorWell

およびのNSTextField列「カテゴリ」NSTextFieldはアレイ コントローラにバインドされているため、テキスト フィールドに書き込んだすべての項目がこの列に表示されます。

私が抱えている問題は次のとおりです。

ユーザーが色を選択したときに、「カテゴリ」列の文字列がその色を取得するようにしNSColorWellます。すべて正常に動作しますが、もう一度アプリを開いて 2 番目のエントリを作成すると、「カテゴリ」列の文字列の色が、ユーザーが色を選択する前の最初の色に戻ります。

私が現在これを試している方法:

AppDelegate.h :

AppDelegate.m :

ToDoItem.h :

ToDoItem.m :

私のコードが私の問題を理解し、これを機能させるのに役立つことを願っています.

あなたからの便りを楽しみにしています。ありがとう。

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

objective-c - encodeRootObjectを使用してアーカイブされたものをアーカイブ解除する正しい方法は何ですか?

Keyed Archiverクラスを初めて使用しようとしていますが、この単純なテスト(OCUnit)の最後のアサートに失敗しています。

アーカイバがアーカイブ中であることを確認しました。問題はアーカイブ解除に存在すると想定しています。Archives and Serializations Guideによると、Unarchiverの使用方法に問題があるのではないかと思います。

ありがとう!

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

iphone - NSMutableArray(他の配列を含む)をファイルに保存する方法

これは以前に尋ねられており、人々はこれを行う方法について非常に良い指示を与えています、例えばここで

ただし、1つのNSMutableArray(別のNSMutableArrayのさまざまなインスタンスを含む)をファイルに保存したいだけの場合、本当にNSCoderを使用する必要があるのでしょうか。これを試しましたが、エラーメッセージしか表示されませんでした:

私のエラーメッセージ:

だから私はNSCoderと一緒に仕事をしなければならないと思いますよね?もしそうなら、私はこれについてどうやって行くのか疑問に思いました。人々はクラスでこれを行う方法を説明しましたが、私の場合、クラスのさまざまなインスタンスを含むNSMutableArray(myLibrary)があります。このクラスとNSMutableArrayにNSCoderを実装する必要がありますか?

私は自分のライブラリを次のように割り当てます。

次に、次のようにNoteBook.mというクラスのインスタンスを追加します。

では、NSCoderコマンドを正確にどこに配置すればよいでしょうか。私のNoteBook.mクラスにのみ?これは自動的にmyLibraryを処理しますか?

提案をありがとう。


編集:

コードを更新しましたが、大きな問題は、NSMutableArray myLibraryに、設定したカスタムクラス(ノートブックと呼ばれる)のインスタンスがいくつか含まれていることだと思います。このクラス(およびそのすべての変数)にNSCodingを設定して、保存してロードできるようにしました。

これで、ディスクからロードする代わりに、アプリでNSMutableArrayを作成した場合(つまり、アプリを初めて起動したときにファイルが存在しない場合)、アプリは完全に正常に機能します。

ディスクからロードすると、正常に動作します。

ライブラリをロードした後にライブラリに含まれているものをすべてログに記録しても、すべて問題ありません。たとえば、次は完全に正常に機能します。

ただし、大きな問題は、他のメソッドがmyLibraryにアクセスしようとした場合です。たとえば、別のメソッドからまったく同じlogコマンドを呼び出すと、アプリがクラッシュし、次のエラーメッセージが表示されます。

これは、myLibraryが何らかの理由で割り当て解除されたように聞こえますが、理由がわかりません。どうしてこれが起こったのでしょうか?NSCodingのセットアップで何か間違ったことをしたような気がします...コードでmyLibraryを作成するだけで、すべてが素晴らしく機能するからです。ディスクからロードした場合にのみ、アプリがクラッシュします。


クラスの設定は次のとおりです。


編集:

私はそれを解決したと思います...私は少し「自己」を忘れました...それはそれをすべて台無しにしてmyLibraryの割り当てを解除しました:

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

iphone - NSUserDefaults、NSCoder、カスタムクラス-iPhoneアプリの質問

エラーが発生しました。次のプロセスで何か問題が発生していると思います。まず、連絡先のクラスがあります。

そして、Contactの実装では、次のことがあります。

また、アプリで「グループ」と呼ぶものを作成するときは、次のことを行います。

私が作成したいくつかの印刷ステートメントによると、これは正常に機能しているようです。

次に、アプリが起動したら、保存したオブジェクトを印刷しようとします。

ただし、NSLog(@ "got contact%@"、c);の行で、プログラムの実行が停止します。すべてが正常に印刷され、オブジェクトのクラスが「Contact」であることが印刷されます。しかし、それからそれは止まります。エラーがあるようですが、左側のエラー領域のXCode4の[スレッド別]オプションの下に疑問符が表示されています。

だから私は何が間違っているのですか?

ここに画像の説明を入力してください

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

c# - C#/.NET で Apple/Objective-C から永続化されたデータを読み取る

AppleのシリアライゼーションAPIから永続化されたデータを読み取ることができるC#/ .NETライブラリまたは既存のコードはありますか?NSKeyedArchiver, NSKeyedUnarchiver, NSCoder

コンテキスト: 私の友人がいくつかの Apple デバイス用のクールなアプリを作成しました。Microsoft の世界向けの同様のアプリがあり、彼のドキュメントをインポートしたいと考えています。データは、必要なすべてのコンテンツを含む 1 つのファイルにあります。このファイルは、上記の Apple API で作成されます。

C# で Apple のデータを読み取る最も簡単な方法は何ですか?

ありがとう、マルセル

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

objective-c - Objective-C 構造体プロパティ ポインタは、self.prop 経由で作成できませんか?

NSCoder サポートをクラスに書き込んでいるときに、ちょっとした驚きに遭遇しました。rgb 構造体型の公開された「色」プロパティを含むクラス A があります。Aを拡張する別のクラスBがあります。

クラス B の encodeWithCoder メソッド内でカラー プロパティをエンコードするために、最初に次のように NSValue にラップしました。

ただし、このコードを使用すると、次のコンパイル エラーが発生します。

NSValue でラップする前に self.color をメソッド スコープの値にコピーするだけで簡単に回避できますが、これがいつ発生するか、およびなぜ発生するかについてのルールを理解したいと思います。これは、そのプロパティ名の真のクラス フィールドが存在する必要がないため、任意の @synthesize プロパティで発生しますか?したがって、ポイントするオブジェクトが保証されていませんか?

0 投票する
3 に答える
1057 参照

objective-c - NSCoder や NSKeyedUnarchiver は、同じオブジェクトの複数のデコードをどのように処理しますか?

NSCoder複数のオブジェクトによって共有およびエンコードされたオブジェクトが、次にデコードされたときにどのように処理されるのか疑問に思っていました。オブジェクトのコピーを 2 つ作成するか、それとも 1 つのオブジェクトをデコードして、それをデコードする他のすべてのオブジェクト間で共有するか?

以下に、このような状況の小さな例を示しました。

例:

  1. アプリケーションが起動します
  2. オブジェクト A とオブジェクト B がオブジェクト C をデリゲートとして設定する
  3. アプリケーションは終了通知を受け取ります。
  4. オブジェクト A とオブジェクト Bは、自身とそのすべてのオブジェクト (デリゲートを含む) をエンコードします。
  5. アプリケーションがシャットダウンして再起動する
  6. オブジェクト A とオブジェクト Bは、自身とそのすべてのオブジェクト (デリゲートを含む) をデコードします。

ステップ 6 の後、オブジェクト A とオブジェクト B の両方が同じデコードされたオブジェクトを共有するでしょうか、それともそれぞれが独自のコピーを持っているでしょうか?

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

iphone - NSCoderのdecodeBytesForKeyによって返されたポインターを逆参照するとiOSデバイスでクラッシュする

Apple LLVMコンパイラ3.0を使用し、-O3でコンパイルすると、NSCoderで異常なクラッシュが発生することがわかりました。デバイスでのみクラッシュします。iOS5を実行しているiPhone4、iOS5を実行しているiPad2、およびiOS4を実行しているiPad1をテストしました。すべて同じようにクラッシュします。コードの関連セクションは次のとおりです。

そして、BBPointI32とは次のとおりです。

が逆参照されたEXC_BAD_ACCESSときに発生します。dataこれはnullポインタの問題ではありません。GDBをアタッチすると、長さが8で、sizeof(BBPointI)も8であり、データが正しいことがわかります。

分解を見ると、クラッシュは次のように発生しています。

これは問題ないようです。r0には、のアドレスである0xb546eが含まれていますdata。そのメモリを調べると、期待するデータが含まれていることがわかります。興味のある人は、r2に72(それが何であるかはわかりません)が含まれ、r3には8(おそらくの値length)が含まれます。

誰かがこの問題に光を当てることができますか?

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

iphone - initWithCoder: メソッドを持つビューを初期化する方法

で初期化されたビューがあります -(id)initWithCoder:(NSCoder *)aDecoder このビューを で初期化するにはどうすればよいviewControllerですか?

viewControllerデバイスでビューを表示したい場合は、が必要だと思いautoRotateます。よくわかりませんが、 ?autoRotationなしで達成できるかもしれません。viewController

オブザーバーをshouldAutorotateToInterfaceOrientation:ビューに追加しても、ビューが自動回転しませんでした。しかし、私も追加すると

コンソール ウィンドウで向きの値を取得します。

どんな助けでも大歓迎です。

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

objective-c - NSCoder をサブクラス化する場合、コレクション クラス (つまり、NSArray、NSDictionary) もサブクラス化する必要がありますか?

NSCoder独自のファイル形式を読み書きするためにサブクラス化するというアイデアを検討しています。これには、適切にエンコードされるようにサブクラスNSArray化しNSDictionaryてオーバーライドする必要があるかもしれないと考え始めています。encodeWithCoder:

NSCoder関連するプロトコルNSCodingは自給自足である必要があるため、これを行うのは気が進まない...プロトコルに従ってサブクラス化クラスを要求することは、悪い設計のように思えます。私は何かを誤解しているか、考えすぎていますか?!?

少し
詳しく説明します。 たとえば、ファイル形式で、アイテムのリストが次のようにエンコードされることが規定されている場合:

配列をエンコードするには、次のencodeWithCoder:ようにする必要があると思います。

私は NSArrayencodeWithCoder:がどのように実装されているかを無視しているので、NSCoder クラスを適切に使用するにはオーバーライドする必要があると思います。