我有一个代码来消费一个REST服务,但它停止工作后更新到swift 2.3和iOS 10。我在JSON中得到错误到NSMutableArray转换:
class func getStores(latitude:Float, longitude: Float, completion : (Array<Store>?, NSError?) -> ()) {
let latString: String = "(latitude)"
let lonString: String = "(longitude)"
var listStores: Array<Store> = []
let urlFull : String = ConstantHelper.baseURLStore
Alamofire.request(.GET, urlFull, parameters: ["latitude":latString, "longitude": lonString])
.responseJSON { response in
switch response.result {
case .Success:
if let repoJSON = response.result.value {
print(repoJSON)
let jsonArray = repoJSON as? NSMutableArray
for item in jsonArray! {
guard let store = Store(json: item as! JSON) else
{
print("Issue deserializing model")
return
}
listStores.append(store)
}
completion(listStores, nil)
}
break
case .Failure(let error):
completion(nil, error)
break
}
}
}
编辑:错误是"致命错误:在展开可选值时意外发现nil "
表示变量jsonArray为nil。但是只有在swift 2.3中它是nil。因为json到NSMutableArray的转换不再有效。我需要改变皈依的方式……但如何?
这是repoJSON值(
{
cdState = SP;
cdStore = 100;
cdZipCode = "04029200 ";
mnStore = IBI;
noAddress = "AV IBIRAPUERA,";
noAddressAditional = " 3103 - LOJAS 4-5";
noAddressNeighborhood = " 3103";
noCity = "SU00e3o Paulo ";
noStore = "IBI-M-C-SHOPPING IBIRAPUERA";
vlLatitude = "-23.610113";
vlLongitude = "-46.666505";
},
{
cdState = SP;
cdStore = 105;
cdZipCode = "05724900 ";
mnStore = JSU;
noAddress = "AV GIOVANNI GRONCHI, 5819 - LUC001";
noAddressAditional = "<null>";
noAddressNeighborhood = "VILA ANDRADE";
noCity = "SU00e3o Paulo ";
noStore = "JSU-C-C-SHOPPING JARDIM SUL";
vlLatitude = "-23.630835";
vlLongitude = "-46.7359";
},
{
cdState = SP;
cdStore = 107;
cdZipCode = "05145000 ";
mnStore = TTE;
noAddress = "AV. RAIMUNDO PEREIRA DE MAGALHU00c3ES, 1465 U0096 LOJA U00c2NCORA 1000";
noAddressAditional = "<null>";
noAddressNeighborhood = "JD U00cdRIS";
noCity = "SU00e3o Paulo ";
noStore = "TTE-PP-C-SHOPPING TIETU00ca PLAZA";
vlLatitude = "-23.506182";
vlLongitude = "-46.718449";
},
{
cdState = SP;
cdStore = 115;
cdZipCode = "03153001 ";
mnStore = CEN;
noAddress = "AV.DR.FRANCISCO MESQUITA, 1000";
noAddressAditional = "<null>";
noAddressNeighborhood = "VILA PRUDENTE";
noCity = "SU00e3o Paulo ";
noStore = "CEN-PP-C-CENTRAL PLAZA SHOPPING";
vlLatitude = "-23.593389";
vlLongitude = "-46.585574";
}
)
我刚刚用
更新了我的代码let jsonArray = repoJSON as! NSArray
不是let jsonArray = repoJSON as? NSMutableArray
效果很好!