我正在处理一个项目,并且已到达要从表视图中的Web服务显示数据的阶段。我现在用的是Alamofire库,但是当我建立我的项目,我得到的错误:无法将'__NSDictionaryI'(0x16e9900)类型的值转换为'NSArray'(0x16e96f8)
Could not cast value of type '__NSDictionaryI' (0x16e9900) to 'NSArray' (0x16e96f8).
我的代码如下:
import UIKit
import Alamofire
class TestingViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var listData : [[String : AnyObject]] = [[String : AnyObject]]()
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.dataSource = self
self.tableView.delegate = self
let url : URL = URL(string : "some url")!
Alamofire.request(url).responseJSON(completionHandler: {
response in
switch response.result{
case .success:
self.listData = response.result.value as! [[String : AnyObject]]
self.tableView.reloadData()
case .failure(let error):
print(error)
}
})
// Do any additional setup after loading the view.
}
}
JSON数据如下:
{
"oscBalances": [
{
"walletName": "Main Balance",
"walletBalance": -0.548927,
"walletBalanceExpiryDate": 4607186400000
},
{
"walletName": "Gprs_bundle",
"walletBalance": 0,
"walletBalanceExpiryDate": 1472853599000
},
{
"walletName": "Go_SVB1",
"walletBalance": 0,
"walletBalanceExpiryDate": 1480738710000
},
{
"walletName": "Go_SVB1",
"walletBalance": 0,
"walletBalanceExpiryDate": 1480738710000
},
{
"walletName": "night_bundle",
"walletBalance": 245.66,
"walletBalanceExpiryDate": 1486147937000
}, {
"walletName": "night_bundle",
"walletBalance": 245.66,
"walletBalanceExpiryDate": 1486147937000
},
{
"walletName": "Daily_Data1",
"walletBalance": 510437397772.4562,
"walletBalanceExpiryDate": 1487250499000
},
{
"walletName": "Go_SVB1",
"walletBalance": 0,
"walletBalanceExpiryDate": 1480738710000
}
],
"pcrfBalances": [
{
"svrName": "Weekly Whatsapp",
"quotaBalance": 174.92578125,
"quotaConsumption": 5.07421875,
"expiryDate": 1488204496000
}
]
}
我想显示OCS余额的walletName,walletBalance和walletBalanceExpiryDate,以及我想显示svrName,quotaBalance,quotaConsumption,expiryDate的pcrfBalances
究竟哪一行导致错误? – rmaddy
上的代码如下: self.listData = response.result.value as! [[String:AnyObject]] –
'response.result.value'是一个Dictionary,而不是您输入它的字典数组。 – Larme