0

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

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

我在考虑一个名为 Category 的 NSObject,其中一个 NSString 用于标题,一个 NSMutableArray 用于项目。然后另一个 NSObject 使用 NSStrings 称为 Item。

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

4

1 回答 1

0

你的模型看起来足够好。但为什么只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];
}
于 2013-04-20T14:08:04.670 回答