看板 MacDev 關於我們 聯絡資訊
因為現在連線方式要改成用https的方式去連 所以我APP要改寫一下 然後用到NSURLConnection這東西 但是他不會等到我連線完成回應的資料也下載完成後才繼續程式 我送出去他就直接跑下一行程式 造成沒資料回來 http://pastebin.com/eAHAHn66 然後我google到兩個方式 一個是用 NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self startImmediately:NO]; [theConnection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; [theConnection start]; 但是無效 他還是不會等資料回來就繼續走了 另外一個是用無線迴圈去等資料完成 while(!finish) { [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; } 這種方式是可以等到資料回來才繼續下去 但是要用到無限迴圈 好像有點不好... 想搞定看看第一個方法是怎麼做的 還是我少做甚麼... 有人可以給我解答麻... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.84.63.193
ybite:為什麼不改成非同步的寫法呢? 07/12 15:54
ybite:(也就是送出 Request 之後用 Delegate 去接結果) 07/12 15:55
kiii210:你一次只送出一個請求嗎?還是有用迴圈跑? 07/12 16:18
tentenlee:目前只有一個 之後會有多個 07/12 16:45
tentenlee:請位非同步的寫法是甚麼意思? 目前適用delegate去接結果 07/12 16:46
tentenlee:但是還沒接完 他就跳走了 07/12 16:46
kiii210:我自己遇到是跑迴圈跑太快,一次送出太多request來不急接收 07/12 16:51
tentenlee:現在只有一個呀~ 一個都搞不定 還沒想到多個.. 07/12 16:51
kiii210:所以第一個request還沒跑完,就已經送出第二個第三個reques 07/12 16:52
kiii210:後來有解決,不過看來情況好像不一樣,不知道"跳走"是甚 07/12 16:52
kiii210:麼意思 07/12 16:52
我是建立一個.h .m要來做call api這件事情 然後送出需求給server之後 他會直接跑到下一行 不會等資料回傳完整之後再回傳資料給我 然後程式就跑到後面我需要有接回資料的地方的程式 現在用一個無限迴圈把他停在送出資料的那行的話 就可以正常 會等到資料回傳之後再繼續下去 但是也有google到第一個做法 所以想知道第一個做法的方式是如何 是不是我有甚麼地方沒注意到的 所以她不會等到資料接收結束才繼續下一行 ※ 編輯: tentenlee 來自: 219.84.63.193 (07/12 16:58)
Blueshiva:你處理data的code要放在delegate裡面 07/12 17:09
但是 如果沒有用迴圈去跑讓她停留在那邊的話 他根本不會跑delegate 就直接下一行了 他只會送出去 ※ 編輯: tentenlee 來自: 219.84.63.193 (07/12 17:13)
kiii210:弱弱一問 有用到UIWebview嗎@@? 07/12 17:17
沒有 只是 http post 需要送資料過去 等他回給我資料 那些資料我在來使用 ※ 編輯: tentenlee 來自: 219.84.63.193 (07/12 17:21)
kiii210:你是要回傳的html原碼嗎? 07/12 17:23
回傳的資料是JSON格式
tentenlee:有那邊可以讓我放code會讓大家比較好讀的嗎? 07/12 17:24
※ 編輯: tentenlee 來自: 219.84.63.193 (07/12 17:25)
kiii210:http://pastebin.com/ 07/12 17:25
kiii210:JSON沒用過...QQ看要不要用UIWebView試試看 07/12 17:28
kiii210:然後在webViewDidFinishLoad處理你要的資料 07/12 17:28
http://pastebin.com/eAHAHn66 json就只是一串文字而已 用webview去做反而沒意義 ※ 編輯: tentenlee 來自: 219.84.63.193 (07/12 17:32)
kiii210:一樣可以在後端執行阿~我也是post出去之後,在DidFinishLoa 07/12 17:38
kiii210:d處理網頁原碼0.0 速度一樣很快..以上..新手弱弱建議-.- 07/12 17:38
kiii210:json就真的不懂了~~>"< 07/12 17:39
現在重點真的不是在json 現在是還沒接收到資料 他就跑下去了 我根本還沒看到他回來是甚麼東西 ※ 編輯: tentenlee 來自: 219.84.63.193 (07/12 17:42)
popcorny:怎麼不用[NSData dataWithContentsOfURL:url]? 07/12 19:06
Blueshiva:那會block UI,最好避免 07/12 19:19
popcorny:對啊.. 會block ui..不過原po不是就要這樣嗎? 07/12 23:07
tentenlee:這個函數 只是下載吧?這是GET資料 但是我要POST後再GET 07/13 10:48
popcorny:那我會建議直接用現有的library去包裝你的NSURLConnectio 07/13 12:00
popcorny:ASIHttpRequest, AFNetworking, MKNetworkKit.... 07/13 12:02
popcorny:比你自己去組NSData.. 自己去處理delegate容易許多 07/13 12:02
tentenlee:我知道~ 但是我還是想要知道為什麼.. 如果這禮拜搞不定 07/13 13:52
tentenlee:我下禮拜就會用上述的那些東西來用了 07/13 13:52
nobody1:ASIHttpRequest 雖然沒在維護了 不過也很夠用了 07/14 00:01