Xcode は初めてで、AFNetworking を使用してサーバーからデータを取得しています。
再帰関数を使用して、応答から次の JSON データを抽出しようとしています。
{
"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
}
以下は、関数がオブジェクトを返す再帰メソッドです。mainCategory はブロック内にネストされています
- (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;
}
データを抽出し、深さに達したら停止してリトラクトするにはどうすればよいですか?
mainCategory は再び 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;