我正在创建一个应用程序,其中我有不同的类别,这些类别有不同的项目,我想在表格视图中显示。每个项目都有标题,描述,网址和图片。该类别有一个标题和属于该类别的所有项目。
为此结构创建模型的最佳方法是什么?
我在考虑一个名为Category的NSObject,标题为NSString,项目为NSMutableArray。然后是另一个名为Item with NSStrings的NSObject。
我将用所有数据解析JSON。但是,如何将JSON对象解析为正确的类别模型数组?
答案 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];
}