0

さまざまなカテゴリを持つアプリを作成しています。これらのカテゴリには、テーブル ビューに表示したいさまざまなアイテムがあります。各アイテムには、タイトル、説明、URL、および画像があります。カテゴリにはタイトルと、そのカテゴリに属する​​すべてのアイテムがあります。

この構造のモデルを作成する最良の方法はどれですか?

タイトルに NSString 、アイテムに NSMutableArray を持つ、Category という NSObject について考えていました。そして、NSStrings を持つ Item と呼ばれる別の NSObject です。

すべてのデータを含む JSON を解析します。しかし、JSON オブジェクトを適切なカテゴリ モデル配列に解析するにはどうすればよいでしょうか?

4

1 に答える 1

0

あなたのモデルは十分によく見えます。しかし、なぜNSStringsアイテムだけなのか。説明項目モデル クラスによると、次のようになります。

@interface Item: NSObject{
    NSString *title;
    NSString *description;
    NSURL *itemURL;
    UIImage *image;
}

NSJSONSerializationjsonの解析に使用できます。例:

次のような 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];
}
于 2013-04-20T14:08:04.670 に答える