Проблемы сериализации словаря с TouchJson

Я занимаюсь разработкой небольшого приложения для iPad и пытаюсь сериализовать словарь в NSData для сохранения на диске. Я использую с фреймворком TouchJson. И пример моего примера структуры:

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

}

Структура моего словаря: словарь со словарями внутри. У этих словарей есть строка (ID) и NSMutableArray с NSValue.

Строка кода, которую я использую:

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

Ошибка, которую дает мне переменная error:

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}"
        );
    };
}'}

Спасибо заранее

1 ответ

Решение

TouchJSON поддерживает сериализацию следующих типов:

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

Если вы хотите сериализовать другой тип, вам нужно реализовать -(NSData*)JSONDataRepresentation (или на подкласс или категорию).

Вот пример, который я использовал для 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
Другие вопросы по тегам