2011-03-03 56 views
0

我想從JSON對象追加2個鍵值到iPhone應用程序的列表中。下面是我的代碼,添加2個鍵值從JSON對象列表

SBJsonParser *jsonParser = [[[SBJsonParser alloc] init] autorelease]; 
    NSString *jsonString=[[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://test/json/json_data.php"]]; 

    id response = [jsonParser objectWithString:jsonString error:NULL]; 

    NSDictionary *feed = (NSDictionary *)response; 
    list = (NSArray *)[feed valueForKey:@"fname"]; 

上面的代碼中正確顯示從FNAME的價值,但我做了什麼,如果我想LNAME添加到它。例如,我的對象是 [{「fname」:「Bill」,「lname」:「Jones」},{「fname」:「John」,「lname」:「Jacobs」}] 我想顯示名稱如Bill Jones,John Jacobs等等。目前它只顯示比爾,約翰..我試着做@ @「fname」@lname的東西,但它不會工作..可以任何人請幫助我..

回答

1

觀察:來自JSON解析器的響應不是字典,但給出你傳入的字符串的數組。您的代碼有效,因爲-valueForKey:是數組將響應的內容。該陣列將-valueforKey:發送到每個元素並從響應中構建一個數組。

有兩種方法,你可以做你想做的(至少)

  1. 迭代通過數組明確

    NSMutableArray* list = [[NSMutableArray alloc] init]; 
    for (id anObject in response) 
    { 
        [list addObject: [NSString stringWithFormat: @"%@ %@", 
                   [anObject objectForKey: @"fName"], 
                   [anObject objectForKey: @"lname"]]]; 
    } 
    
  2. 添加類別的NSDictionary

    @interface NSDictionary(FullName) 
    -(NSString*) fullName; 
    @end 
    
    @implementation NSDictionary(FullName) 
    
    -(NSString*) fullName 
    { 
        return [NSString stringWithFormat: @"%@ %@", 
                 [self objectForKey: @"fName"], 
                 [self objectForKey: @"lname"]]; 
    } 
    
    @end 
    

    然後您現有的代碼更改爲

    list = (NSArray *)[feed valueForKey:@"fullName"]; 
    
+0

@developer:NSIndexPath沒有名爲row的屬性。可能你的應用程序會拋出一個異常,這就是爲什麼你沒有得到任何內容。 – JeremyP

+0

非常感謝@ JeremyP ..我能夠弄清楚我的問題。實際上,我在本地創建的列表將其更改爲實例變量,並且所有內容似乎都能正常工作。謝謝你的幫助......一切都很完美。 – developer