json-framework: EXC_BAD_ACCESS для stringWithObject
ОБНОВИТЬ:
Я обнаружил, что причиной предыдущей ошибки была ошибка в документации.
Метод должен называться proxyForJson, а не jsonProxyObject...
Но я все еще застрял.
Теперь я получаю ошибку EXC_BAD_ACCESS внутри stringWithObject где. Есть какие-нибудь подсказки?
ОБНОВЛЕНИЕ 2:
Моя реализация proxyForJson представляет собой вырезанную из документации документацию:
- (id)proxyForJson {
return [NSDictionary dictionaryWithObjectsAndKeys:
Navn, @"Navn",
Adresse, @"Adresse",
Alder, @"Alder",
nil];
}
Попытка заставить сериализацию JSON работать для моего пользовательского класса target-c.
Как я понимаю из документации, json-framework может сериализовать пользовательские объекты, если они реализуют метод jsonProxyObject.
Итак, у меня есть этот класс:
@interface MyObject : NSObject {
NSString *Name;
NSString *Addresse;
NSInteger Age;
}
@property (nonatomic, retain) NSString *Name;
@property (nonatomic, retain) NSString *Addresse;
@property (nonatomic, assign) NSInteger Age;
- (id)jsonProxyObject;
@end
И я пытаюсь сериализовать массив с некоторыми экземплярами в нем:
[json stringWithObject:list error:&error];
Но все, что я получаю, это следующая ошибка:
"Сериализация JSON не поддерживается для MyObject"
Я предполагаю, что jsonWriter по какой-то причине не может найти мой метод jsonProxyObject. Почему?
С уважением.
3 ответа
Я не уверен, что это правильно, но определение класса следующим образом решает проблему:
@interface MyObject : NSObject {
NSString *Name;
NSString *Addresse;
NSInteger *Age;
}
@property (nonatomic, retain) NSString *Name;
@property (nonatomic, retain) NSString *Addresse;
@property (nonatomic, retain) NSInteger *Age;
- (id)jsonProxyObject;
@end
Затем инициализируем переменную как:
Age = [[NSNumber alloc] initWithInt:32];
Вы пытались включить NSZombies и MallocStackLogging в панели информации об исполняемых файлах, чтобы проверить источник EXC_BAD_ACCESS? Если нет, вы можете попробовать это и проверить консоль на вывод. EXC_BAD_ACCESS часто является ошибкой, вызванной чрезмерным освобождением объекта где-либо.
В NSString нет stringWithObject:
метод. Вы должны попробовать использовать stringWithFormat:
вместо.