問題タブ [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 - UIImage ファイルを NSData に変換して NSCoding で保存する
UIImageABRecordRef
を自分のNSCoding
適合クラスに保存しようとしています。私が知る限り、それUIImage
はNSCoding
適合していないので、代わりに次の回避策を試しましたNSData
:
このクラスのインスタンスを保存しようとすると、何らかの理由でプログラムがすぐにクラッシュします。私は何を間違っていましたか、またはより良いことをしましたか: どうすれば私がやりたいことを達成できますか? ありがとう!
iphone - カスタム オブジェクトの無効な属性を持つ NSMutableArray
カスタム オブジェクトを含む nsmutable 配列を NSUserDefault に保存しました。しかし、取得しているときにオブジェクトを含む配列を取得しましたが、オブジェクトを反復処理しようとすると、アプリがクラッシュし、ローカル デバッガーで無効になりました
CFStringRef とログ - [メッセージ タイトル]: 認識されないセレクターがインスタンス 0x187900 に送信されました。
私のカスタム オブジェクトは NSCoding プロトコルに従います。配列を出力すると、オブジェクトとメモリの割り当てが 16 進数で表示されます。
私のメッセージ。テスト用に名前を属性に変更しました。
オブジェクトを保存して取得しようとするメソッド:
-(void)saveToFile:(NSMutableArray *)incoming{
}
ios - OSXとiOS間のnskeyedarchiverの互換性
デスクトップココアアプリケーションとiOSアプリケーション間でNSCodingプロトコルを実装するクラスを共有する場合、これら2つのアプリケーション間でオブジェクトをアーカイブすることによって作成されたデータファイルを共有することもできますか?
objective-c - NSCoder や NSKeyedUnarchiver は、同じオブジェクトの複数のデコードをどのように処理しますか?
NSCoder
複数のオブジェクトによって共有およびエンコードされたオブジェクトが、次にデコードされたときにどのように処理されるのか疑問に思っていました。オブジェクトのコピーを 2 つ作成するか、それとも 1 つのオブジェクトをデコードして、それをデコードする他のすべてのオブジェクト間で共有するか?
以下に、このような状況の小さな例を示しました。
例:
- アプリケーションが起動します
- オブジェクト A とオブジェクト B がオブジェクト C をデリゲートとして設定する
- アプリケーションは終了通知を受け取ります。
- オブジェクト A とオブジェクト Bは、自身とそのすべてのオブジェクト (デリゲートを含む) をエンコードします。
- アプリケーションがシャットダウンして再起動する
- オブジェクト A とオブジェクト Bは、自身とそのすべてのオブジェクト (デリゲートを含む) をデコードします。
ステップ 6 の後、オブジェクト A とオブジェクト B の両方が同じデコードされたオブジェクトを共有するでしょうか、それともそれぞれが独自のコピーを持っているでしょうか?
iphone - ビューにカスタム画像を含むUIButtonが含まれている場合、UIViewControllerencodeWithCoderが失敗します
基本的に、私の問題はまさにそれがタイトルに書かれていることです。のサブクラスをエンコードしようとすると、をUIViewController
呼び出すと。具体的には、。 [super encodeWithCoder]
NSInvalidArgumentException
-[UIImage encodeWithCoder:]: unrecognized selector sent to instance XxXXXXXX
ビュー内の唯一の画像画像はにありUIButton
、これもNSCodingに準拠していると想定されており、スタックトレースにはへの呼び出しが含まれています[UIBUtton encodeWithCoder]
。ボタンはプログラムで作成され[UIButton buttonWithType:UIButtonTypeCustom]
、画像はで設定されsetImage: forState:
ます。ここで何が起こっているのか本当にわかりません。私は明らかな何かを見逃していますか、それともUIButton
本当に準拠していませんNSCoding
か?
objective-c - NSKeyedArchiver が予期しないクラスを返しますか?
を拡張するカスタム クラスがありますNSString
。を使用して(ドラッグ/ドロップ用に)シリアル化しようとしていNSKeyedArchiver
ます。...Coder
クラスはメソッドをオーバーライドします。
しかし、実際にアーカイブ/アーカイブ解除を実行しようとすると:
出力は私が期待しているものではありません:
ios - iOS5 での iOS4 データのアンアーカイブが機能しない
をNSDictionary
使用して iOS 4 で をNSKeyedArchiver
アーカイブしましたが、iOS 5 では を使用してアーカイブを解除しています
この例外をスローします
iOS 4 でのアーカイブ解除は正常に機能することに注意してください。 plutil -lint
アーカイブが正常であることを報告します。参考までに、次のとおりです。
ios - encodeObjectを使用してUIPickerViewをアーカイブすることは可能ですか?
ビューの状態を復元したいのですが、ビューに。がありUIPickerView
ます。
UIPickerView
グラフィックコンポーネント、つまり背景のホイール画像があるように見えます。私はそれUIImage
をアーカイブできないことを知っています。のような画像を含むものはすべて、エンコードする前にUIImageView
まず画像をに設定する必要があります。nil
ただし、準拠してUIPickerView
います。NSCoding
つまりencodeObject
、動作するdecodeObject
はずです。
しかし、彼らはしません。つまり、エラーは発生しません。しかし、デコードした後、UIPickerView
画像なしで取得します。見栄えが悪い!
これは、私が怒っていないことを証明するためのショットの前後です。
前
後
これで、現在のユーザー選択を保存し、ピッカーのメソッドを呼び出してビューを再作成できることがわかりましたselectRow
。しかし、本当に、私は興味があります。UIPickerView
NSCoding
実際には準拠しておらず、背景のホイール画像を元に戻すためにこれ以上何もできないのに、なぜ準拠しているのですか?
iphone - カスタムクラスのサブクラスでのNSCodingの使用
NSCodingを使用して、データ永続性のメソッドとしてカスタムクラスをアーカイブ/アーカイブ解除しています。オブジェクトがNSObjectのサブクラスである場合は正常に機能しますが、カスタムオブジェクトのサブクラスであるオブジェクトもあります。initWithCoder:メソッドとencodeWithCoderを変更する必要がありますか?現在、サブクラスに固有のプロパティは正常にエンコード/デコードされますが、サブクラスがスーパークラスから継承するプロパティはそうではありません。何かご意見は?基本的な構造は次のとおりです。
およびサブクラス:
objective-c - カスタム初期化を使用したNSCoding
以下のようなカスタムinitメソッドを持つ「Defense」という名前のクラスがあります。
現在、クラスNSCoding
を互換性のあるものにしています。これには、次の2つのメソッドが必要です。
通常、「防御」のインスタンスを割り当てるときは、次のようにコーディングします。
保存したDefenseオブジェクトのインスタンスを復元したい場合は、次のようにコーディングします。
initialize
しかし、上記のコードでは、オブジェクトに非常に必要な「type」パラメーターと「mapref」パラメーターを渡すことができません。
Defenseクラスはから派生し、に準拠しCCSprite
てCCSprite
いないため、私のメソッドNSCoding
から呼び出すのは問題ありません。ただし、initWithFileに渡すファイル名を決定するためのパラメーターが必要です。(self = [super initWithFile:fileName])
initWithCoder
type
ccsprite's
それで、私はこの状況で何をしますか?クラスのデザインを変更する必要がありますか?はいの場合、どのように?
良いアイデア/提案は大歓迎です...:)