不同类别的模型结构

时间:2013-04-20 13:18:33

标签: objective-c model structure

我正在创建一个应用程序,其中我有不同的类别,这些类别有不同的项目,我想在表格视图中显示。每个项目都有标题,描述,网址和图片。该类别有一个标题和属于该类别的所有项目。

为此结构创建模型的最佳方法是什么?

我在考虑一个名为Category的NSObject,标题为NSString,项目为NSMutableArray。然后是另一个名为Item with NSStrings的NSObject。

我将用所有数据解析JSON。但是,如何将JSON对象解析为正确的类别模型数组?

1 个答案:

答案 0 :(得分:0)

你的模型看起来很好。但为什么只有NSStrings为Item。根据您的描述项目,模型类应如下所示:

@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循环。

NSDictionary *categoryDict = [[jsonObj valueForKey:"tab1"] objectAtIndex:0];
for (id key in categoryDict){
    NSLog(@"Key : %@",key);
    NSLog(@"Value: %@",[categorDict valueForKey:key];
}