Как я могу получить свойства из NSDictionary?

У меня есть веб-сервис, который возвращает данные в мое клиентское приложение в формате JSON. Я использую TouchJson, чтобы затем десериализовать эти данные в NSDictionary. Отлично. Словарь содержит ключ, "results", а результаты содержат NSArray объектов.

Эти объекты выглядят так, когда печатаются для регистрации, т.е.

NSLog(@"Results Contents: %@",[resultsArray objectAtIndex:0 ]);

Выходы:

Results Contents: {
    creationdate = "2011-06-29 22:03:24";        
    id = 1;
    notes = "This is a test item";
    title = "Test Item";
    "users_id" = 1;
}

Я не могу определить тип этого объекта. Как я могу получить свойства и значения от этого объекта?

Спасибо!

2 ответа

Решение

Чтобы получить содержание NSDictionary Вы должны предоставить ключ для значения, которое вы хотите получить. То есть:

NSString *notes = [[resultsArray objectAtIndex:0] valueForKey:@"notes"];

Чтобы проверить, является ли объект экземпляром класса aиспользуйте один из них:

[yourObject isKindOfClass:[a class]]

[yourObject isMemberOfClass:[a class]]

Чтобы получить имя класса объекта, вы можете использовать один из них:

const char* className = class_getName([yourObject class]);

NSString *className = NSStringFromClass([yourObject class]); 

Для NSDictionary, ты можешь использовать -allKeys вернуть NSArray словарных ключей. Это также позволит вам узнать, сколько их (взяв count массива). Как только вы знаете тип, вы можете позвонить

[[resultsArray objectAtIndex:0] objectForKey:keyString];

где keyString один из @"creationdate", @"notes"и т. д. Однако, если класс не является подклассом NSObject, тогда вместо этого используйте:

[[resultsArray objectAtIndex:0] valueForKey:keyString];

например, вам, вероятно, нужно сделать это для keystring равно @"id",

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