2014-01-13 64 views
-4

我在iOS開發新的,我打電話返回我的數據,如JSON響應和NSDictionary的

[ 
    { 
     "ID": "3416a75f4cea9109507cacd8e2f2aefc3416a75f4cea9109507cacd8e2f2aefc", 
     "Name": "2M Enerji" 
    }, 
    { 
     "ID": "072b030ba126b2f4b2374f342be9ed44072b030ba126b2f4b2374f342be9ed44", 
     "Name": "Çedaş" 
    }, 
    { 
     "ID": "093f65e080a295f8076b1c5722a46aa2093f65e080a295f8076b1c5722a46aa2", 
     "Name": "Çelikler" 
    }, 
    { 
     "ID": "7cbbc409ec990f19c78c75bd1e06f2157cbbc409ec990f19c78c75bd1e06f215", 
     "Name": "Çoruh EDAŞ" 
    }, 
    { 
     "ID": "70efdf2ec9b086079795c442636b55fb70efdf2ec9b086079795c442636b55fb", 
     "Name": "İçdaş" 
    } 
] 

現在我試圖讓它陣列中的Web服務,該陣列將是獨立的名稱和ID,我做了,直到採取在NSDICT下面是我的代碼

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    NSLog(@"finish loading"); 
    NSString *loginStatus = [[NSString alloc] initWithBytes:[webData mutableBytes] 
                length:[webData length] 
                encoding:NSUTF8StringEncoding]; 

    NSString *responsewith = [[NSString alloc] initWithData:webData 
                encoding:NSUTF8StringEncoding]; 
    //providerData = [NSKeyedUnarchiver unarchiveObjectWithData:webData]; 
    providerDropData = [NSString stringWithFormat:responsewith]; 
    NSLog(@"drop %@",providerDropData); 

    NSArray *providerData = [providerDropData valueForKey:@"ID"]; 
    NSLog(@"jey %@",responsewith); 
    NSLog(@"resonser %@",responsewith); 
    NSLog(@"laoding data %@",loginStatus); 
    //greeting.text = loginStatus; 
    [loginStatus release]; 
    [connection release]; 
    [webData release]; 
} 

,當我試圖保存NSDictionaryNSArray@"ID"應用得到墜毀。

請幫

+2

NSDICT ???那是什麼? – Tirth

+3

「應用程序崩潰」 - 這是非常具有描述性的。謹慎解釋這意味着什麼,錯誤是什麼? –

+0

您需要枚舉字典並將字符串對象添加到數組中。 – suhit

回答

0

您可以從JSON像下面的方式以及獲取數據,

id jsonObjectData = [NSJSONSerialization JSONObjectWithData:webData error:&error]; 
    if(jsonObjectData){ 
    NSMutableArray *idArray = [jsonObjectData mutableArrayValueForKeyPath:@"ID"]; 
    NSMutableArray *nameArray = [jsonObjectData mutableArrayValueForKeyPath:@"Name"]; 
} 
+0

if(providerDropData){id_Data = [providerDropData mutableArrayValueForKeyPath:@「ID」]; NSMutableArray * nameArray = [providerDropData mutableArrayValueForKeyPath:@「Name」]; providerData = [providerDropData mutableArrayValueForKey:@「ID」]; NSLog(@「%d數組數」,providerData.count); } 這個工程現在我有保存在providerData中,它顯示正確的計數,但沒有顯示在我的表,你可以請幫忙嗎? – user3089900

0

將數據轉換爲NSDictionary通過解析,那麼你可以使用KVP提取。

NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:response options:0 error:&error]; 
+0

我做了webdata是我的NSDATA – user3089900

+0

對不起,更新了答案。 –

+0

我已經轉換 – user3089900

1

你只是想用NSJSONSerialization

NSError *error = nil; 
NSArray *results = [NSJSONSerialization JSONObjectWithData:webData options:0 error:&error]; 
if (!results) 
    NSLog(@"%s: JSONObjectWithData error: %@", __FUNCTION__, error); 

// get the first provider id 

NSString *providerData = results[0][@"ID"]; 
+0

NSString * providerData = results [0] [@「ID」];這樣提供了錯誤'預期方法來讀取在NSDictonary' – user3089900

+0

的對象類型沒有找到元件@ user3089900取代'的NSDictionary * results'與'的NSArray * results' – Desdenova

+0

[下午6時22分18秒]月桂樹約翰:2014年1月13日18:21:14.554 Engerjit [885:11303] - [__ NSArrayM objectForKeyedSubscript(inlove):無法識別的選擇發送到實例0xecb60b0 2014年1月13日18:21:14.555 Engerjit [885:11303] ***終止應用程序由於未捕獲的異常'NSInvalidArgumentException',原因:' - [__ NSArrayM objectForKeyedSubscript(inlove):無法識別的選擇器發送到實例0xecb60b0' ***第一次拋出調用堆棧: – user3089900

0
NSDictionary * providerDropData = [NSJSONSerialization JSONObjectWithData:webData error:&error]; 
NSLog(@"drop %@",providerDropData); 

NSMutableArray *providerData = [NSMutableArray new]; 
NSString *key = @"ID"; 
for (key in providerDropData){ 
    NSLog(@"Key: %@, Value %@", key, [providerDropData objectForKey: key]); 
    [providerData addObject:[providerDropData objectForKey:key]]; 
} 

NSLog("ID Array = %@", providerData]); 
} 
+1

如果要那些'ID'值的陣列,也可以只'的NSArray * providerData = [providerDropData valueForKey:@ 「ID」];'。 – Rob

+0

2014-01-13 18:36:32。*** Engerjit [1042:11303] - [__ NSArrayM objectForKey(inlove):無法識別的選擇器發送到實例0x75c3250 2014-01-13 18:36:32.605 Engerjit [1042:11303] ***終止應用程序,由於未捕獲異常'NSInvalidArgumentException' ,原因:' - [__ NSArrayM objectForKey(inlove):無法識別的選擇器發送到實例0x75c3250' ***第一次拋出調用堆棧: – user3089900

+0

@ user3089900該錯誤(以及上面在其他答案中引用的那個)表明JSON是不是你說的是。將'providerDropData'(或'results'記錄在我的答案中)並用此更新你的問題。 – Rob