2013-04-12 4 views
0

recherche d'aide NSKeyedUnarchiver à MonoTouchMonoTouch NSKeyedUnarchiver

Storying un tableau d'éléments du dictionnaire dans un champ blob SQLite

code IOS

NSData  *data = [[NSData alloc] initWithBytes:ptr length:size]; 
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; 
NSMutableArray *myArray = [unarchiver decodeObjectForKey:@"pricing"]; 
[unarchiver finishDecoding]; 
NSMutableArray *MutData = [[NSMutableArray alloc] init]; 
for (NSDictionary *obj in myArray) { 
    NSMutableDictionary *element = [[NSMutableDictionary alloc] initWithDictionary:obj]; 
    [MutData addObject:element]; 
} 

Essayer de se convertir à MonoTouch, à ce jour J'ai

MonoTouch code

NSData data = NSData.FromString(item.pricing); 

NSKeyedUnarchiver unarchive = new NSKeyedUnarchiver(data); 
unarchive.DecodeObject(); 
unarchive.FinishDecoding(); 

NSMutableArray array = unarchive.GetNativeField("pricing") as NSMutableArray; 
NSMutableArray mutArray = new NSMutableArray(); 

for (uint count=0; count < array.Count; count++) 
{ 
    NSMutableDictionary mutDict = new NSMutableDictionary(array.ValueAt(count)); 
    mutArray.Add(mutDict); 
} 

produit et erreur lors de l'exécution

exception non gérée gérée: exception Objective-C jeté. Nom: NSInvalidArgumentException Raison: * - [NSKeyedUnarchiver initForReadingWithData:]: archives incompréhensible (0x62, 0x70, 0x6C, 0x69, 0x73, 0x74, 0x30, 0x30) (MonoTouch.Foundation.MonoTouchException) à (wrapper géré -à-native) MonoTouch.ObjCRuntime.Messaging: monotouch_IntPtr_objc_msgSend_IntPtr (IntPtr, IntPtr, IntPtr) à MonoTouch.Foundation.NSKeyedUnarchiver..ctor (données MonoTouch.Foundation.NSData) [0x00027] dans /développeur/MonoTouch/Source/monotouch/src/Fondation/NSKeyedUnarchiver.g.cs: 88 Stacktrace:

De la nouvelle NSKeyedUnarchiver (données) ligne

On peut quelqu'un suggérer des tutoriels/exemples pour MonoTouch NSKeyedUnarchiver?

Deux personnes peuvent-elles aider avec cette erreur?

Dernière Est-ce la meilleure façon à la lumière que le projet est d'être multi-plateforme et le travail sous Android (éventuellement)

Merci à l'avance

Répondre

1

Le problème est probablement la façon dont vous créez la NSData initiale .

This est ce que NSData.FromString fait, ce qui ne ressemble pas vraiment à ce que vous faites dans Objetive-C.

Si vous avez un pointeur disponible en C#, essayez d'utiliser NSData.FromBytes à la place.

+0

Merci tristement, essayer FromBytes n'avait pas aidé non plus. Il fonctionnera cependant mais tout est vide/vide/nul excepté le byte initial [] item.pricing. autre chose que je peux essayer – NewDev

+0

obtenez-vous la même exception avec FromBytes? –