如何从函数内部获取 JSON 数据并将其快速显示在文本字段上?

Posted

技术标签:

【中文标题】如何从函数内部获取 JSON 数据并将其快速显示在文本字段上?【英文标题】:How get JSON data from inside a function and display it on textfield in swift? 【发布时间】:2019-12-01 10:02:40 【问题描述】:

我一直在学习如何将 json 数据解析为 swift...我正在尝试将我的 pincode 区域显示到一个文本字段中...我创建了两个三个 swift 文件 mapview.swift、maphandler.swift 和 mapmodel。 swift.the 问题是我想从函数内部获取数据到另一个 swift 文件,以便我可以在文本字段上显示它...我尝试创建一个结构来存储该 pin 码,然后将其传递给 mapview .swift 但没有运气

这是能够获取密码作为数据的代码

func parseJson(Json:Data) 

    let decoder = JSONDecoder()
    do
        let decodedData = try decoder.decode(MapModel.self, from: Json)
        let format = decodedData.results[0].formatted_address
        var pinCode:String!
        for item in decodedData.results[0].address_components
            if item.types[0] == "postal_code"
                pinCode =  ( item.long_name)

            
        

       print(pinCode)


    
    catch

        print(error)
        return 

    



我想要做的就是将该 pincode 数据获取到 mapview.swift 以便我可以在文本字段上显示它

【问题讨论】:

【参考方案1】:

看起来你想要的是返回密码的函数。你可以这样做:

func parsePinCode(fromJson json: Data) -> String? 

    let decoder = JSONDecoder()
    do 
        let decodedData = try decoder.decode(MapModel.self, from: json)
        let format = decodedData.results[0].formatted_address
        var pinCode:String!
        for item in decodedData.results[0].address_components
            if item.types[0] == "postal_code"
                pinCode = (item.long_name)

                // Return the pinCode if we found one
                return pinCode
            
        
     catch 
        print(error)
    

    return nil

您可以通过从其他 swift 文件中调用它来使用此函数,如下所示(其中myJsonData 是您要解码的 json 数据):

let pinCode = parsePinCode(fromJson: myJsonData)

编辑:

如果你想返回多个值,你可以创建一个包含你想返回的所有值的结构。例如:

struct MapData 
    var pinCode: String?
    var address: String?


func parsePinCode(fromJson json: Data) -> MapData? 

    let decoder = JSONDecoder()
    do 
        let decodedData = try decoder.decode(MapModel.self, from: json)

        var mapData = MapData()

        mapData.address = decodedData.results[0].formatted_address

        for item in decodedData.results[0].address_components 
            if item.types[0] == "postal_code" 
                mapData.pinCode = (item.long_name)
                break
            
        

        return mapData
     catch 
        print(error)
    

    return nil

【讨论】:

如果我在该函数中有两个需要检索的数据怎么办?? 我已经更新了答案,以展示如何使用结构从函数返回多个值。 在第二种情况下,我将值存储在结构中,我正确吗?? 无法访问它,哥们...我还有其他选项可以访问它吗

以上是关于如何从函数内部获取 JSON 数据并将其快速显示在文本字段上?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 html 页面获取内部 html 并将其显示在 Angular 组件上?

如何从订阅内部函数中获取价值?离子 3

如何获取嵌套的 JSON 数据列表并将其显示在 MatTable 中?

从外部 URL 获取 JSON 数据并将其以纯文本形式显示在 div 中

如何使用 Alamofire 4.0 获取 JSON 字典/数组并将其显示在 tableView Cell 上

如何从 url 获取 json 数据并将其保存到 const 变量 [TypeScript]