【发布时间】:2017-04-17 12:37:24
【问题描述】:
当我解析 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;
【问题讨论】:
-
不要使用
valueForKey(在最广义上会导致错误),使用键下标。 不要使用NSArray / NSDictionary,使用 Swift 原生集合类型。 不要在 Swift 中使用NSMutable...集合类型。 不要注释编译器可以推断的类型。
标签: ios swift nsdictionary