2011-03-23 3 views
2

Je développe une petite application pour l'ipad et j'essaie de sérialiser un dictionnaire en NSData pour l'enregistrer sur le disque. J'utilise avec le framework TouchJson. Et exemple de mon exemple, la structure:Problèmes de sérialisation d'un dictionnaire avec TouchJson

{ 
line =  { 
    78986928 =   (
     "NSPoint: {442, 266}", 
     (...) 
     "NSPoint: {370, 634}" 
    ); 
}; 

}

La structure de mon dictionnaire est: un dictionnaire avec des dictionnaires à l'intérieur. Ces dictionnaires ont une chaîne (ID) et un NSMutableArray avec un NSValue.

La ligne de code est que j'utilise est:

NSData *jsonData = [[CJSONSerializer serializer] serializeObject:templates error:&error];

L'erreur que l'erreur variable me donner est:

2011-03-23 10:12:12.957 GestureFramework[286:207] Error Domain=TODO_DOMAIN Code=-1 "Could not serialize object '{ 
line =  { 
    78986928 =   (
     "NSPoint: {442, 266}", 
     (...) 
     "NSPoint: {370, 634}" 
    ); 
}; 
}'" UserInfo=0x4e27aa0 {NSLocalizedDescription=Could not serialize object '{ 
    line =  { 
     78986928 =   (
      "NSPoint: {442, 266}", 
      (...) 
      "NSPoint: {370, 634}" 
     ); 
    }; 
}'} 

Thnx à l'avance

Répondre

4

TouchJSON prend en charge la sérialisation des types suivants:

  • NSNull
  • NSNumber
  • NSString
  • NSArray
  • NSDictionary
  • NSData

Si vous souhaitez sérialiser un autre type que vous aurez besoin de mettre en œuvre -(NSData*)JSONDataRepresentation (soit sur un sous-classe ou catégorie).

Voici un exemple que j'ai utilisé pour NSDate:

@interface NSDate (JSONDataRepresentation) 
- (NSData*)JSONDataRepresentation; 
@end 

.

@implementation NSDate (JSONDataRepresentation) 
- (NSData*)JSONDataRepresentation 
{ 
    return [@"\"didn't want to waste the space to do the real conversion\"" dataUsingEncoding: NSUTF8StringEncoding]; 
} 
@end 
Questions connexes