Ios 如何从函数内部获取JSON数据并将其显示在swift的文本字段中?
我一直在学习如何将json数据解析为swift…我正在尝试将我的pincode from区域显示为文本字段…我创建了两个三个swift文件mapview.swift,问题是我想将函数内部的数据获取到另一个swift文件,以便在文本字段中显示它…我尝试创建一个结构来存储pin码,然后将其传递到mapview.swift,但没有成功 这是能够获取pincode作为数据的代码Ios 如何从函数内部获取JSON数据并将其显示在swift的文本字段中?,ios,json,swift,function,api,Ios,Json,Swift,Function,Api,我一直在学习如何将json数据解析为swift…我正在尝试将我的pincode from区域显示为文本字段…我创建了两个三个swift文件mapview.swift,问题是我想将函数内部的数据获取到另一个swift文件,以便在文本字段中显示它…我尝试创建一个结构来存储pin码,然后将其传递到mapview.swift,但没有成功 这是能够获取pincode作为数据的代码 func parseJson(Json:Data) { let decoder = JSONDecoder()
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,这样我就可以将其显示在文本字段中。看起来您需要的是返回pin码的函数。您可以按如下方式执行此操作:
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数据):
编辑:
如果要返回多个值,可以创建一个包含所有要返回值的结构。例如:
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
}
如果我在该函数中有两个数据需要重设呢?我已经更新了答案,以显示如何使用结构从函数返回多个值。在第二种情况下,我将值存储在结构中,我是否正确?无法访问它,伙计…我是否有其他选项可以访问它
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
}