[英]how to parse pagination url using alamofire and swiftyjson in swift?
[英]Alamofire 4 Request is returning NSArray, cannot figure out how to parse with SwiftyJSON in Swift 3
此Alamofire .POST請求的早期版本和SwiftyJSON解析在Swift 2.2和Xcode 7上都可以正常工作。更新到Swift 3.0,這需要安裝更新的Alamofire(4.0.0)和更新的SwiftyJSON。 經過一些語法調整后,所有內容現在都可以編譯了。
問題是我的Web應用程序現在似乎返回一個NSArray,而在代碼工作之前,幾乎相同的Request得到了一個由SwiftyJSON解析的NSData返回。 以下代碼顯示了請求:
Alamofire.request("https://www.mywebappurl", method: .post, parameters: parameters)
.responseJSON { (response:DataResponse<Any>) in
if let data = response.result.value as? Data {
永遠不會分配數據變量,因為響應類型不是NSData。 嘗試通過將最后一行更改為此類型來強制轉換為該類型:
let data = response.result.value as! Data
該版本編譯良好,但是一旦觸發請求,您將收到錯誤:無法將類型'__NSArrayI'(0x105a37c08)的值強制轉換為'NSData'
請注意,該請求正在按預期返回數據。 在以前的Alamofire中,該數據為NSData,無需采取任何措施即可將其轉換。 由於從上述錯誤中可以看出,返回的數據已經是數組,因此Alamofire是否已對其進行了解析? 還是可以做一些使SwiftyJSON像以前一樣解析的事情?
編輯
由於返回的當前類型是NSArray,並且Web應用程序正在發送數組,因此似乎不再需要SwiftyJSON解析了嗎? 嘗試了以下代碼:
Alamofire.request("https://www.mywebappurl", method: .post, parameters: parameters)
.responseJSON { (response:DataResponse<Any>) in
let testdata = response.result.value as! NSArray
print(testdata[0])
在Xcode“所有輸出”屏幕中產生了以下輸出:
{
1 = "08/01/16";
2 = 285;
3 = 160;
}
我不清楚這是否意味着testdata是一個數組數組,一個字典數組或一個未解析的字符串數組。 因此,除了回答“如何從該Alamofire請求中獲取NSData響應”問題之外,還可以回答“可以使用哪一行代碼(如果有)從整數中獲取整數值285”這一問題。上面顯示的NSArray測試數據?” 也可以解決問題。
如果您從此更改數據初始化行:
if let data = response.result.value as? Data {
對此:
let data = response.data
然后,該請求將導致NSData返回,可以像以前一樣由SwiftyJSON對其進行解析。 工作請求和解析代碼如下所示:
Alamofire.request("https://www.mywebappurl", method: .post, parameters: parameters)
.responseJSON { (response:DataResponse<Any>) in
let data = response.data
let jsonvalues = JSON(data: data!)
可能需要添加一些錯誤處理,但這與當前的問題無關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.