あなたのモデルは十分によく見えます。しかし、なぜNSStrings
アイテムだけなのか。説明項目モデル クラスによると、次のようになります。
@interface Item: NSObject{
NSString *title;
NSString *description;
NSURL *itemURL;
UIImage *image;
}
NSJSONSerialization
jsonの解析に使用できます。例:
次のような json 文字列がある場合は、次のように解析できます。
NSString *jsonString= @"{ \"category1\": [ { \"iTitle\" : \"item1\", \"iDescription\":\"desc1\"},{ \"iTitle\" : \"item2\", \"iDescription\":\"desc2\"}]}";
NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *jsonObj = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
解析してクラスに入れたい場合は、次のことができます。
for (NSString *category in jsonObj) {
Category *categoryObj = [[Category alloc] init];
categoryObj.title = category;
NSArray *itemArray = [jsonObj valueForKey:category];
for (NSDictionary *item in itemArray) {
Item *itemObj = [[Item alloc] init];
itemObj.title = [item valueForKey:@"title"];
itemObj.description= [item valueForKey:@"description"];
[categoryObj.items addObject:itemObj];
}
}
辞書をループする (または文字列内の「category1」にアクセスする)
@"{ \"tab1\": [{ \"category1\": [ { \"iTitle\" : \"item1\", \"iDescription\":\"desc1\"},{ \"iTitle\" : \"item2\", \"iDescription\":\"desc2\"}]}}"
for in ループを使用できます。
NSDictionary *categoryDict = [[jsonObj valueForKey:"tab1"] objectAtIndex:0];
for (id key in categoryDict){
NSLog(@"Key : %@",key);
NSLog(@"Value: %@",[categorDict valueForKey:key];
}