2010-07-21 84 views
0

我想創建一個iphone應用程序,它抓住一個JSON字符串,解析它,並在表視圖中顯示項目列表。iPhone編程:製作MVC風格的應用程序來正確解析JSON?

我也試圖爲我的項目使用模型 - 視圖 - 控制器(MVC)架構。

我的問題是兩個部分:

1)如何構建我的不同的文件符合本標準(MVC)?我一直在瀏覽大量的XML解析示例,它們似乎實現了諸如'requestDidFinishLoad','setActiveProperty'等標準方法......我怎樣才能找到準確的我需要實現哪些方法才能成功發送請求並解析JSON字符串?

+0

哦。謝謝你的提升。有點新的stackoverflow。 – unicornherder 2010-07-21 20:00:33

回答

0

蘋果在MVC上有很棒的文檔。見this link

其基本思想是將您的應用分成負責顯示數據(視圖),數據本身(模型)和兩者(控制器)之間接口的部分。

在你的情況下,如果你只是解析並顯示JSON而不需要保存或編輯信息,那麼你可以切出模型並完成控制器中的所有工作。只需製作一個UITableViewController子類,將JSON解析爲一個數組並將該數組用作表視圖的數據源。如果永久存儲數據對你來說比你想要看像plists或CoreData的東西更重要。

+0

感謝回覆。也許,我應該給你一些關於我想要設計的信息。 基本上,我有一個對象被稱爲'標誌'與2個屬性(id,消息)和時間軸(標誌列表)。標記列表將通過API調用傳遞給我。所以理想情況下,我想要一個單獨的類文件來處理所有的JSON解析,創建一個標誌數組並將其傳遞給tableView。那麼,我應該將JSONobject作爲某種數據源來實現嗎? – unicornherder 2010-07-21 21:58:19

3

您的表格視圖模型可能爲NSArrayNSDictionary實例。爲了演示的目的,數組更容易。

Google Code上的json-framework可讓您輕鬆將JSON數組拉入NSArray

舉一個例子,假設您的表格視圖控制器有一個保留的NSArray屬性,稱爲items

然後JSON對象這裏:

{ 
    "items" : [ 
     "item1", 
     "item2", 
     ... 
     "itemN" 
    ] 
} 

可倒入陣列如下:

SBJSON *jsonParser = [[SBJSON alloc] init]; 
NSDictionary *jsonDictionary = (NSDictionary *) [jsonParser objectWithString:jsonString error:nil]; 
self.items = (NSArray *) [jsonDictionary objectForKey:@"items"]; 
[jsonParser release]; 

你的表視圖數據源代表剛剛翻出從items陣列,例如對象:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return [items count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    // instantiate or dequeue cell... 

    // label cells with JSON item names 
    cell.textLabel.text = [items objectAtIndex:indexPath.row]; 
} 
+0

剛剛試過這個..作品像一個魅力。感謝您的迴應! – unicornherder 2010-07-21 21:53:44