当我解析 Api 时,我得到了响应并将完整响应存储到 Dictionary,然后我将它拆分为数组和字典,但是我得到了错误,所以请帮助解决错误,
这里我给出了我尝试过的代码。
let responseDictionary:NSDictionary = responseObject as! NSDictionary
print(responseDictionary)
if let statusCode:NSNumber = responseDictionary.value(forKey: "success") as? NSNumber{
if statusCode == 1{
print("statusCode :",statusCode)
let incomingRequetArray:NSArray = responseDictionary.value(forKey: "incoming_requests") as! NSArray
print("incomingRequetArray",incomingRequetArray)
if (incomingRequetArray.count > 0)
{
let requestDataDict:NSDictionary = incomingRequetArray.value(forKey: "request_data") as! NSDictionary -----> Error in this line
print("requestDataDict",requestDataDict)
let ownerArray:NSArray = requestDataDict.value(forKey: "owner") as! NSArray
print("ownerArray",ownerArray)
self.mutDictOwner = ownerArray.object(at: 0) as! NSMutableDictionary
}
}
responseDictionary 是
"incoming_requests" = (
{
datetime = "2017-04-17 12:25:58";
later = 0;
"request_data" = {
dog = (
);
owner = {
address = "";
"d_latitude" = "0.00000000";
"d_longitude" = "0.00000000";
"dest_latitude" = "0.00000000";
"dest_longitude" = "0.00000000";
latitude = "11.01449160";
longitude = "76.98273220";
name = "Sss Sas";
"num_rating" = 0;
"payment_type" = 1;
phone = "+919123456789";
picture = "";
rating = "0.00";
};
"payment_mode" = 1;
};
"request_id" = 1474;
"request_services" = 30;
"time_left_to_respond" = 21;
}
);
"is_approved" = 1;
"is_approved_txt" = Approved;
"is_available" = 1;
success = 1;
最佳答案
这是因为你的“request_data”是一个对象而不是一个字典,看看“incoming_request”是如何开始的(以“(”)和“request_data”以“{”开头。你可以做的是访问这个
let requestDataDict:NSDictionary = incomingRequetArray.value(forKey: "request_data") as! [AnyObject]-----> Error in this line
print("requestDataDict",requestDataDict)
let x = requestDataDict[0] as! NSDictionary
let ownerArray:NSArray = x.value(forKey: "owner")as! NSArray
关于ios - 无法在 Swift 中将类型 '__NSSingleObjectArrayI' 的值转换为 'NSDictionary',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43451650/