Я пытаюсь получить некоторые данные из вызова API и сопоставить эти объекты с объектом модели. В моем случае у меня есть объект внутри объекта. Это работает и получает JSON. И это отображение отлично с самым первым объектом. В моем JSON у меня есть массив и еще один массив внутри него. Поэтому я сделал следующее, чтобы сделать это.Как сопоставить объект данных JSON внутри объекта?
отображение объекта
+(NSArray *)fromJSON:(NSDictionary *)objectNotation error:(NSError *__autoreleasing *)error{
NSError *localError = nil;
NSDictionary *parsedObject = [[NSDictionary alloc] initWithDictionary:objectNotation];
if (localError != nil) {
*error = localError;
return nil;
}
NSMutableArray *posts = [[NSMutableArray alloc] init];
NSArray *results = [parsedObject valueForKey:@"data"];
NSLog(@"Count %lu", (unsigned long)results.count);
for (NSDictionary *groupDic in results) {
Post *post = [[Post alloc] init];
post.postBody = [NSMutableArray array];
for (NSString *key in groupDic) {
if ([post respondsToSelector:NSSelectorFromString(key)]) {
[post setValue:[groupDic valueForKey:key] forKey:key];
}
}
[posts addObject:post];
}
return posts;
}
Это один делает несколько метаданных, чем я ожидал из-за цикл.
Модель классы
@interface OCPost : NSObject
@property(nonatomic) NSInteger postId;
@property(nonatomic) NSInteger userId;
@property(nonatomic) NSInteger points;
@property(strong, nonatomic) NSMutableArray *body;
@end
Я хочу, чтобы отобразить body
массив с массивом Body
объектов. В моем классе тела
@interface Body : NSObject
@property (strong, nonatomic) NSString *value;
@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSMutableArray *metaData;
@end
А также metadata
должна быть карта со следующим объектом.
@interface MetaData : NSObject
@property (strong, nonatomic) NSString *title;
@property (strong, nonatomic) NSString *metaDataDescription;
@end
Как я могу создать объект, как,
Post
|_Body1
| |_MetaData1
| |_MetaData2
| |_MetaData3
|_Body3
| |_MetaData1
| |_MetaData2
Пожалуйста, помогите.
JSON
{
"message": "Post ",
"data": [
{
"postId": 1,
"timestamp": "2016-06-14 22:37:02",
"body": [
{
"textId": 1,
"type": "link",
"deleting": false,
"metaData": [
{
"metadataId": 1,
"type": "text",
"value": "under "
}
]
},
{
"textId": 2,
"type": "department",
"deleting": false,
"metaData": [
{
"metadataId": 2,
"type": "text",
"value": "under "
}
]
}
]
}
]
}
Вы проверили [мантию] (https://github.com/Mantle/Mantle)? – Bartu
есть. Я пытался. Но не решила мою проблему. Затем я переключился на этот. – codebot
Вы также проверили [это] (http://stackoverflow.com/questions/13883693/how-to-specify-child-objects-type-in-an-nsarray-with-mantle) особенность? – Bartu