問題タブ [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 - NSKeyedUnarchiverから返されたオブジェクトからのexc_bad_access
保存されたデータからNSCodingプロトコルに準拠するカスタムクラスのインスタンスをロードするのに問題があります。私のクラスにはUIImageプロパティがあり、それに新しいUIImageを割り当てると、プログラムがexc_bad_accessでクラッシュします。
ビューコントローラで、オブジェクトを次のように宣言します。
次に、.mファイルでは次のように使用されます。
ここまでは順調ですね。しかし、後で新しい画像を選択して、それをmyObjectの「image」プロパティに設定しようとすると、exc_bad_accessがスローされます。
コードのシングルステップからわかる限り、exc_bad_accessを引き起こしているのは最後の行です。私は何が間違っているのですか?
iphone - NSMutableArray を保存して、iPhone アプリを再度開いたときに読み込む
NSMutableArray があります。この配列の各項目は異なるクラスです。各クラスには、CPPlot、識別子などの多くのフィールドがあります(私はCorePlotを使用してストックアプリケーションを開発しています)。ここで、この NSMutableArray を保存して、ユーザーがアプリケーションを再度開いたときにロードするようにします。これにより、以前に使用したすべてのチャートがロードされます。
私は Stackoverflow でそれを行う方法を理解しようとしています。そして、2つの解決策があることがわかりました:
NSUserDefaults
SQLite データベース
NSUserDefaults では、NSMutableArray を保存する場合、配列オブジェクトをアーカイブおよびアーカイブ解除するために NSKeyedArchiver を実装し、配列オブジェクトの各項目に対して NSCoding プロトコルも実行する必要があります。しかし、各アイテムにはCorePlotライブラリのフィールドがいくつかあるため、これらのフィールドにNSCodingを使用できないため、このソリューションを実行できません。
SQLiteデータベース、配列オブジェクトの各項目が異なるクラスであるため、このソリューションを使用できません。
この問題を解決するための他の解決策があるかどうかを尋ねたいと思いますか?
私の言葉が理解できるほど明確であることを願っています。
ありがとう
objective-c - ネストされた辞書で setValuesForKeysWithDictionary を使用できますか
したがって、キーの1つが辞書の配列であるNSDictionaryがあります。私がマッピングしているクラスには、一致するキー名とセッターがあります。setValuesForKeysWithDictionary でサブ辞書を埋めることはできますか? 試してみると、オブジェクトがポインタジャンクか何かでいっぱいになっているように見えましたが、私は初心者なので、何か間違っているのかもしれません。その機能はそのように機能しますか?
objective-c - initWithCoder での NSCoding リークの問題
次のコードにリークがあります。
リークは、その行のデバイスの計測器に表示されます。
KEY_TITEL は:
および self.Titel は次のとおりです。
合成され、dealloc で解放されます。
漏れがどこから来ているのかわかりません。助けてください...
ありがとうございます
objective-c - .pbxproj 形式はどの NSCoder を使用しますか?
.xcodeproj バンドル内で、メインのプロジェクト データは実際には .pbxproj ファイルに格納されます。これはアーカイブされた辞書であることは明らかですが、Apple が使用したコーダーを見つけることができませんでした。それは のカスタム サブクラスですかNSCoder
、それとも文書化されていて十分に調べていませんか?
ios - カスタムオブジェクトを含むNSMutableDictionariesのNSCoding
タイプのセットSearchEntity
(カスタムオブジェクト)を含むオブジェクト(カスタムオブジェクト)をシリアル化しようとしました。NSMutableDictionary
CategoryEntity
1SearchEntity<NSCoding>
を含む:1 NSMutableDictionary
(パラメーター)CategoryEntities<NSCoding>
文字列と数字のみを含むXを含むパラメーター。
SearchEntity encodeWithCoderのこの行[encoder encodeObject:parameters forKey:kPreviousSearchEntityKey];
で、「毎回GDB:Interruptedが表示され、エラーメッセージや例外などは発生せず、GDB:Interruptedだけが表示されます。
これはの実装でSearchEntity
あり、パラメータはNSMutableDictionary
またCategoryEntity
、NSCodingプロトコルを実装し、次のようになります。
次のように、NSUserDefaultsのラッパーからエンコードしようとします。
SearchEntityをシリアル化するように要求すると、'parameters' mutableDictionaryオブジェクトのシリアル化が開始され、NSCoderは辞書に含まれるCategoryEntitiesで "encode"を呼び出し、それらはすべて正しいエンコードされたオブジェクトで応答すると考えていました。
ただし、コンソールの下部にGDB:Interruptedが表示されます。
どうすればこれをデバッグできますか?
そして、私のアプローチは間違っています、NSDataですべてのレベルのエンコーディングをラップする必要がありますか?
追伸 ResultEntity
を含むNSArrayを使用してまったく同じことを行いますCategoryEntities
。問題なくエンコードされるため、NSMutableDictionaryだけが突出していると思います。
objective-c - NSCoding を使用したオブジェクトのエンコード、または単にデータをファイルに書き込むことの利点と欠点
NSCoding を使用して目的の c でオブジェクトをエンコードし、それらをディスクに書き込むことの利点は、単に永続オブジェクトをディスクに書き込むことよりも優れていることに興味があります。I/O またはディスク容量の使用に関してパフォーマンスが向上していますか?
iphone - なぜ私の属性が1つしかないのですかオブジェクトがファイルに正しく書き込まれていますか?
そのため、アプリケーションの終了時にカスタムオブジェクトのNSMutableArray(Course Plannerアプリの大学のコースを表す「Course」)をファイルに書き込んでから、その配列をファイルから関連するViewControllerに読み込んで使用しようとしています。アプリケーションの起動時のデータの。
関連するコードは次のとおりです。
CoursesAppDelegate.m:
Course.h:
Course.m:
[coursesViewControllercourses]は、コースオブジェクトを保持するNSMutableArrayです。私はそれが有効なデータを保持しているという事実を知っています。
したがって、問題は次のとおりです。1:アプリケーションはxcodeから実行した場合にのみdata.plistに保存されます(つまり、xcodeで[コンパイルして実行]をクリックします)。2:plistからデータをロードしますが、保存されるのはコース名と、gradeとtotalWeightのデフォルト値(それぞれ-1と0)だけです。したがって、実際には、initWithNameが最初に呼び出されたかのように保存されます。
これは、かなり高度なiOSアプリケーションについての私の最初の本当の掘り下げです。したがって、私はこれの初心者なので、いくつかの重要な情報を省略している可能性があります。その場合はお知らせください。質問を更新します。
ありがとう!-HT
ps関連する場合は、info.plistのdoNotRunInBackgroundをtrueに設定しています。
objective-c - Objective-Cでカスタムオブジェクトをplistファイルにシリアル化することは可能ですか?
簡単にするために、次の単純なクラスインターフェイスがあると仮定します。
このオブジェクトをplistにシリアル化することは可能ですか(NSCodingプロトコルが正しく実装されていると仮定して)?
2010年12月31日14:40更新
これについてフォローアップの質問があります。NSKeyedArchiver
plistをXMLとしてエクスポートすることは可能ですか?さらに、XMLをファイルではなく変数にダンプすることは可能ですか?
objective-c - Cocoa Interface Builder オブジェクトの初期化
私が経験したドキュメンテーションとサンプル コードに基づいて、xcode で定義されたクラスが Interface Builder に読み込まれ、構成されたときに、クラスに基づくオブジェクトが効果的に作成され、xib または nib ファイルに格納されるという印象を受けました。 . そのため、対応するアプリケーションが起動されると、オブジェクトを使用する準備が整います。
または、Interface Builder で処理されていないクラスの場合、関連付けられたオブジェクトを作成して使用するには、"new" ステートメントなどのコードを xcode で明示的に記述する必要があります。
私よりも知識のある人が、Interface Builder についての私の非常に素朴な理解を確認または修正してくれるととてもうれしいです...