Проблемы сериализации словаря с 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