arrays - 无法快速将 NSNULL 转换为来自 API 的 NSString 响应

标签 arrays swift

我正在从 API 获取作为对象数组的响应。所以我将该数据存储到一个变量中。响应可能包含一些非空值和一些空值。当将值分配给任何变量时,我收到类似“无法将 NSNUll 转换为 NSString”的错误。如果数组包含空值,那么我想用“空格”或任何东西替换这些错误值。

let parameters: Parameters = [
            "PhoneNumber":currentlevelphonenum
        ]
        Alamofire.request("https://us-central1-192704.cloudfunctions.net/Transaction/post", method: .post, parameters: parameters, encoding: JSONEncoding.default)
            .responseJSON{ //response in
                response in switch response.result {
                case .success(let JSON):
                    //print("Success with JSON: \(JSON)")
                    let response = JSON as! NSDictionary
                    //example if there is an id
                    let status:[NSObject] = response.object(forKey: "Status") as! [NSObject]
                    print("status",status)

                    let errormessage:[NSObject] = response.object(forKey: "Message") as! [NSObject]
                    print("errormessage",errormessage)



                    let contactViewController = self.storyboard?.instantiateViewController(withIdentifier: "TransactionDetails")as! TransactionDetails

                    contactViewController.sstatus = status as! [String] 
                    contactViewController.mmessage = errormessage as![String]


                    self.navigationController?.pushViewController(contactViewController, animated: true)





                case .failure(let error):
                    print("Request failed with error: \(error)")
                }
        }

我也想将状态和消息数组发送到下一个具有空值的 View Controller 。如何解决这个问题? API 响应如下:[failed, <null>, <null>, succeeded, succeeded, succeeded, succeeded, succeeded, <null>, succeeded, <null>, <null>, <null>, succeeded, <null>, succeeded, succeeded, succeeded, failed, failed, failed, <null>, pending, Failed, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, pending, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, pending, pending, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, <null>, pending, pending, pending, <null>, <null>, pending, pending, <null>, <null>, <null>, <null>] 我想用空格替换空值并将该数组发送到下一个 Controller 。

最佳答案

首先不要在Swift中使用NSDictionaryNSObject,使用原生类型和键订阅

let response = JSON as! [String:Any]
//example if there is an id
let status = response["Status"] as! [Any]
print("status",status)

let errormessage = response["Message"] as! [Any]
print("errormessage",errormessage)

要将 NSNull 更改为 "" 使用 map

let mappedStatus = status.map { $0 is NSNull ? "" : $0 }

关于arrays - 无法快速将 NSNULL 转换为来自 API 的 NSString 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54911782/

相关文章:

java源代码刽子手

ios - 如何使用 Swift 在我的应用程序中使用 SwiftMessage cocoapod?

ios - Realm 集合通知和 Collection View 计数之间的不同步

javascript - 使用 Javascript 搜索数组中的项目

ios - 使用未声明的类型错误 : Swift

ios - 切换捕获模式时是否可以将自定义转换添加到 UIImagePicker 自定义叠加层?

ios 如何在推送通知中启动应用程序

c - 如何结束遍历指针数组的 for 循环

c++ - 我可以使用什么算法来计算有多少学生有相同的分数?

c - 使用数组作为函数参数