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: вместо.

Другие вопросы по тегам