2013-04-20 62 views
0

我正在創建一個應用程序,其中有不同的類別,而且這些類別具有不同的項目,我希望在表格視圖中顯示不同的項目。每個項目都有一個標題,描述,網址和圖像。該類別有一個標題和屬於該類別的所有項目。不同類別的模型結構

哪種方法可以爲此結構創建模型?

我在想一個叫做Category的NSObject,它的標題是NSString,項目是NSMutableArray。然後另一個名爲Item with NSStrings的NSObject。

我將解析所有數據的JSON。但是,我怎樣才能解析JSON對象到正確的類別模型數組?

回答

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]; 
    } 
} 

要遍歷一個字典(或字符串中訪問「類別1」

@"{ \"tab1\": [{ \"category1\": [ { \"iTitle\" : \"item1\", \"iDescription\":\"desc1\"},{ \"iTitle\" : \"item2\", \"iDescription\":\"desc2\"}]}}" 

可以使用在循環。

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

謝謝,真的很好的答案! – Jojo 2013-04-24 07:21:16

+0

沒問題。如果您認爲這是可以接受的解決方案。 – Rakesh 2013-04-24 09:06:38

+0

我還有一個問題。我在我的JSON中做了一些更改。現在我也有一個「標籤」。像這樣: NSString * jsonString = @「{」tab1 \「:[{\」category1 \「:[{\」iTitle \「:\」item1 \「,\」iDescription \「:\」desc1 \ 「},{\」iTitle \「:\」item2 \「,\」iDescription \「:\」desc2 \「}]}}]」; 我可以達到tab1,就像你在jsonObj中使用NSString *標籤一樣。但是,我如何達到類別名稱? – Jojo 2013-04-24 10:55:42