ios - 无法在 Swift 中将类型 '__NSSingleObjectArrayI' 的值转换为 'NSDictionary'

标签 ios swift nsdictionary

当我解析 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/

相关文章:

ios - 错误域=CBATTErrorDomain 代码=2 "Reading is not permitted."UserInfo={NSLocalizedDescription=不允许读取。}

iphone - 删除最后一条记录时 UITableView deleteRowsAtIndexPath 崩溃

ios - 尝试快速实现发布者/订阅者

ios - 谷歌分析不显示 ios 数据

ios - 检查 nil 并快速从字典中提取数据

ios - leftcalloutaccessoryView 取整个注解View

objective-c - NSDictionary 中的 NSDictionary

xcode - UISearch栏始终显示:无结果

ios - 如何在 NSDictionary 中存储和检索 NSArray 作为值并作为键 float ?

ios - 如何在不支持 iAd 的国家/地区测试 iAd?