I am new to Xcode and I'm using AFNetworking to fetch data from a server.
I am trying to extract following JSON data from a response using a recursion function:
{
"id": "12345",
"version": 1,
"name": "apple",
"mainCategory": {
"id": "23456",
"version": 2,
"name": "fruit",
"mainCategory": {
"id": "food",
"version": 1,
"name": "eat",
"mainCategory": {
"id": "root",
"version": 1,
"name": "Root",
"mainCategory": null,
"productCount": 1,
"leaf": null,
"productClass": null,
"loaded": true
},
"productCount": 13,
"leaf": null,
"productClass": "xxx",
"loaded": true
},
"productCount": 0,
"leaf": null,
"productClass": "xxx",
"loaded": true
},
"productCount": 0,
"leaf": "1",
"productClass": "xxx",
"loaded": true
}
Below is the recursion method where the function returns the object. The mainCategory is nested within the block
- (ProductCategory *) recursive :(NSDictionary *)productcat
{
NSDictionary *productcategory = productcat;
ProductCategory *p = [[ProductCategory alloc] init];
if (![[productcategory objectForKey:@"mainCategory"] isEqual: NULL])
{
[p setIdentifier:[productcategory objectForKey:@"id"]];
[p setName:[productcategory objectForKey:@"name"]];
[p setLeaf:[productcategory objectForKey:@"leaf"]];
[p setProductClass:[productcategory objectForKey:@"productClass"]];
[p setProductCount:[productcategory objectForKey:@"productCount"]];
[p setVersion:[productcategory objectForKey:@"version"]];
[p setMainCategory:[productcategory objectForKey:@"mainCategory"]];
NSDictionary *mainCategory = [productcategory objectForKey:@"mainCategory"];
[self recursive:mainCategory];
}
return p;
}
How can I extract the data and stop once the depth is reached and retract?
mainCategory is again an object of ProductCategory
ProductCategory is NSobject
@interface ProductCategory : NSObject
@property(nonatomic, strong) NSString *name;
@property(nonatomic, strong) NSString *identifier;
@property (nonatomic, strong) ProductCategory *mainCategory;
@property(retain) NSNumber *productCount;
@property (retain) NSNumber *version;
@property (nonatomic, strong) NSString *leaf;
@property (nonatomic, strong) NSString *productClass;