2011-11-05 69 views
0

我得到使用異步NSURL連接我的JSON對象爲 {"firstname":"A","Contact":{"phone":1234567899,"email":"[email protected]"}}如何在Xcode 4中發佈json對象?

我想知道,如果我改變了我的電話號碼的值,然後要上傳回來,我怎麼能做到這一點。我們是否只發送電話或整個對象的鍵值對 {「firstname」:「A」,「Contact」:{「phone」:1234567899,「email」:「[email protected]」}}更新電話號碼到服務器以便在數據庫中更新。

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; [request setURL:myUrl]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:@"text/plain" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:stringInNSData]; 

我發現上面的邏輯幾乎無處不在,但不知道如何實現以及在哪裏實現。

回答

2

這真的取決於您的服務器以及數據庫的存儲方式。如果您使用的是類似SQL的數據庫,則需要傳遞主鍵,以標識要更新的數據行以及更新的字段。接收帖子的服務器代碼可以更新您傳入的屬性,並保留數據行的其餘部分。

爲了實現這個目標,您應該在數據發生變化時實施它。如果有觸發數據更改的UI元素,則可以在其中實現。只需在代碼下面添加以下代碼

NSURLConnection *urlConnection = [NSURLConnection connectionWithRequest:request delegate:self]; 

這將設置代碼實現的類作爲連接的委託並啓動連接。您可以使用這些方法來處理更新的成功或失敗。

Connection Data and Responses 
– connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite: delegate method Available in iOS 3.0 through iOS 4.3 
– connection:didReceiveData: delegate method Available in iOS 2.0 through iOS 4.3 
– connection:didReceiveResponse: delegate method Available in iOS 2.0 through iOS 4.3 
– connection:willCacheResponse: delegate method Available in iOS 2.0 through iOS 4.3 
– connection:willSendRequest:redirectResponse: delegate method Available in iOS 2.0 through iOS 4.3 
Connection Completion 
– connection:didFailWithError: delegate method Available in iOS 2.0 through iOS 4.3 
– connectionDidFinishLoading: delegate method Available in iOS 2.0 through iOS 4.3 
+0

謝謝maudi :-) – codejunkie

+0

沒問題。看起來你的項目正在向前移動! –

+0

是的,它是:-)我正在製作一個應用程序就像在線產品評級。現在我再次堅持下去。我正在訪問所有用戶發佈的評論。我把它們放在tableview中,但是有一個問題,如文本的大小是否更大,tableview單元格只顯示1行。我正在尋找如何調整tableview的高度。 – codejunkie