2013-02-28 132 views
4

什麼是正確的方式來響應peripheralManager:didReceiveWriteRequests?響應peripheralManager:didReceiveWriteRequests的正確方法是什麼?

標題文檔指出:

「對於這種方法respondToRequestWithResult的每次調用應調用一次。」

在didReceiveWriteRequests中,使用NSArray傳遞多個寫入請求。

如果所有的寫請求都成功處理,我們只是隨意從列表中選擇一個請求,並把它作爲respondToRequestWithResult的論點,因爲該respondToRequestWithResult方法只需要一個CBATTRequest參數,而不是CBATTRequests列表裏面自帶didReceiveWriteRequests ?

我期待一個對稱響應方法,將請求列表作爲參數。

片內凱斯

回答

4

從蘋果文檔:Here

從連接的中央處理寫入請求也很簡單。當連接的中央設備發送請求以寫入一個或多個特性的值時,外圍設備管理器將調用其委託對象的peripheralManager:didReceiveWriteRequests:方法。這一次,委託方法以包含一個或多個CBATTRequest對象的數組的形式向您發送請求,每個CBATTRequest對象表示一個寫請求。你已確保之後的寫請求可以得到滿足,你可以寫特性的價值,就像這樣:

myCharacteristic.value = request.value; 

雖然上面的例子不能證明這一點,一定要考慮到寫作時要求的偏移特性你的特徵的價值。

就像您響應讀取請求一樣,每次調用peripheralManager:didReceiveWriteRequests:delegate方法時,都會調用respondToRequest:withResult:方法一次。也就是說,儘管您可能從peripheralManager:didReceiveWriteRequests:delegate方法收到了包含多個數組的一個數組,但respondToRequest:withResult:方法的第一個參數需要單個CBATTRequest對象。你應該通過在數組的第一個要求,是這樣的:

[myPeripheralManager respondToRequest:[requests objectAtIndex:0] 

    withResult:CBATTErrorSuccess]; 
+2

超級混亂,你在第一個請求通過,當你有一組人,有什麼原因? – fjlksahfob 2014-03-06 18:21:01

相關問題