当我在 Swift 中打印一个数组时,它的类型(<__NSArrayM 0x60800024a1a0>)也随之而来。为啥?

Posted

技术标签:

【中文标题】当我在 Swift 中打印一个数组时,它的类型(<__NSArrayM 0x60800024a1a0>)也随之而来。为啥?【英文标题】:When i am printing an array in Swift its type(<__NSArrayM 0x60800024a1a0>) is also coming with it. Why?当我在 Swift 中打印一个数组时,它的类型(<__NSArrayM 0x60800024a1a0>)也随之而来。为什么? 【发布时间】:2016-10-06 12:07:25 【问题描述】:
let doctorId: NSNumber = (self.selectedDoctor["id"] as? NSNumber)!
        let referredTo:Dictionary = ["id":doctorId]
        var postParams = [String : Any]()
        postParams["referredTo"] = referredTo as AnyObject?


        if self.mCase != nil

            if let patient:Patient = self.mCase.patient 
            postParams["patient"] = ["id":patient.id!]
            

            if let mCaseId:NSNumber = self.mCase.id
                postParams["medicalCase"] = ["id":mCaseId]
            

            postParams["completeCase"]  = self.completeCase as AnyObject?
            postParams["includeAttachments"] = self.includeAttachment as AnyObject?

          let visitDict = NSMutableDictionary ()

            //let array = NSMutableArray()

            for dict in self.visitIds   


               let indx : Int!  = (dict["visitID"] as? Int)!

                visitDict["visit"] =  ["id":indx!]
                self.visitArray.add(visitDict)
            
           if self.completeCase 
                for visit in self.mCase.visits
                var id = (visit as AnyObject).id!
                    visitDict["visit"] = ["id": id!]
                    self.visitArray.add(visitDict)
                
            


            postParams["referredVisits"]  = self.visitArray
        print(postParams["referredVisits"])
        

        else

         let patient:Dictionary  =   ["id":self.patientId]
            postParams["patient"] = patient as AnyObject?

        

        marseResponse = MARSRequest.SendRequest("POST", postParams: postParams as [String : AnyObject]?,getParams: nil, service:.postpatientrererral)

这就是我设置参数的方式

Error Xcode 在打印数组时显示&lt;__NSArrayM &gt;,请指导我如何删除它。请参考下图。它在swift 2 中运行良好,但是当我将代码更新为swift 3 时,出现了这个问题。当我在POST 方法中发送参数时会发生这种情况。可能正因为如此,我无法解析数据。

Data Parsing这就是我解析数据的方式

【问题讨论】:

您只是在 POST 请求正文中发送数组的原始内部调试表示吗? 虽然我正在发送一个空数组,但它即将到来 您为什么不尝试将数据转换为像 JSON 这样的正确传输格式?您为什么要为此使用内部表示 你能建议我怎么做吗?我是ios的新手。任何帮助对我来说都会很棒。也许我正在以适当的运输方式进行。我不确定 【参考方案1】:

将您的数据转换为 JSON 怎么样?

例如使用标准类JSONSerialization

let array = [
    [
        "visit": [
            "id": 2625
        ]
    ]
]
let data = try JSONSerialization.data(withJSONObject: array, options: [])
let string = String(data: data, encoding: .utf8)

然后发送string值?

【讨论】:

我在关于解析数据的问题中添加了一张图片。你能看看它并suugest我吗 无法实现这一点。你能看看数据解析图像吗?在代码中,问题出现在 post[referredVisits]

以上是关于当我在 Swift 中打印一个数组时,它的类型(<__NSArrayM 0x60800024a1a0>)也随之而来。为啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有行终止符的情况下快速打印字符数组

所以我做了一个线性搜索代码,但是当我在数组中输入一个数字时,它仍然会打印(数字没有)为啥会这样?

iOS如何从解析Swift 4中获取行[关闭]

如何从它的消息中分离异常类型

使用 swift 将数组保存和检索到用户默认值

Swift 范围界定问题