2011-12-03 1 views
0

私はCydiaを微調整しようとしていますが、今はいくつか問題があります。NSKeyedArchiverは配列をアーカイブできません

私はNSMutableArrayのをコピーしたいので、私が使用します。

myArray = %orig; 
NSMutableArray* myArray2; 
myArray2 = myArray; 
NSData* data = [NSKeyedArchiver archivedDataWithRootObject: myArray2]; 

(元の関数はNSMutableArrayのを返されたので、私はMyArrayという=%ORIGを使用し、それを得るために)

しかし、そうですarchivedDataWithRootObjectが機能せず、常にデバイスのクラッシュが発生します。

したがって、archivedDataWithRootObjectには制限がありますか?元のNSMutableArrayがエンコードされているかどうかはわかりません。エンコードされたNSMutableArraにarchivedDataWithRootObjectを使用できますか?私はあなたのコードにこのコード行を理解していない

+0

クラッシュログを提供してもよろしいですか? ObjCアプリケーションがコアをダンプすると、コールスタックが出力されることがよくあります。私はどの機能がクラッシュしたのかよく分かります。 gdbを使ってこれを取得し、バックトレースを見ることさえできます。 –

+0

iOS全体がクラッシュしたため(respring)、xcodeでクラッシュレポートが見つかりませんでした。 – Hiraku

+0

私は今ログを取得します。 " - [UIKBTree encodeWithCoder:]:インスタンス0xe8cdbe0に送信された認識できないセレクタ" – Hiraku

答えて

0

任意の提案をありがとうと返信:

MyArrayという=%ORIG。

そして、私はあなたがこれをやっている理由を理解することはできません。

NSMutableArrayの* myArray2。
myArray2 = myArray;

あなたがたNSArrayやNSMutableArrayのを得た場合は、そのコード行で直接エンコードすることができるようになります。

NSData* data = [NSKeyedArchiver archivedDataWithRootObject: myArray2]; 

BUT(存在として常にあるけど...)
何あなたのNSArrayに店舗がありますか?
custom objectを入手した場合は、アーカイブダンスに参加できるようにNSCodingプロトコルを実装する必要があります。

、最終的にはあなたが言っている:

を私はNSMutableArrayのをコピーしたいので、私が使用します。

あなたはちょうどあなたがこれを行うことができますNSMutableArrayをコピーする場合:

[[NSMutableArray alloc] initWithArray:anArray]; 

私はまだ%記号を取得しませんそこ。
新しいオブジェクトを追加する必要がある場合は、新しいオブジェクトを作成するなどの単純な作業に取り掛かる必要はありません。
第1に、それらのオブジェクトにNSCopyingプロトコルを実装し、必要に応じて動作させるか、
第2の選択肢:配列に1つのタイプのオブジェクトが含まれている場合、クラスメソッドを作成することができます。これらのオブジェクトはnewObjectWithArray:(* NSArray)theArrayであり、このメソッドでは受信オブジェクトの値に初期化するオブジェクトalloc オブジェクトです。

+0

、あるいは '[NSMutableArray arrayWithArray:anArray]'です。 –

+0

はい、私は必要でない限り、自動リリースされたオブジェクトを避けたいと思います。 –

+0

私はmyArray =%origを使用しています。その関数が返す元の配列をiOSで取得します。私は同じカスタムオブジェクト内のいくつかのintとNSMutableArrayを作成しようとしましたが、NSKeyedArchiverを使用してそれらをアーカイブすることができます。私は[[NSMutableArray alloc] initWithArray:anArray];を試みます。 :) – Hiraku

関連する問題