从API保存JSON数据

时间:2019-05-30 18:37:07

标签: ios swift

我正在尝试创建一个条形码扫描应用程序,该应用程序将允许用户扫描物品的条形码,然后保存该扫描的物品以供以后在程序中使用。该项目将另存为ITEM对象。我正在使用API​​从条形码UPC中检索商品名称,但是在扫描后,我无法弄清楚如何从完成处理程序中提取商品名称,以将其分配给要在对象中使用的itemName变量。

扫描条形码后,我可以通过API检索商品名称,但是我无法将商品名称保存在变量中,以在完成处理程序之外使用。我可以将其保存在处理程序内部的变量中,但不能在外部使用。

func grabItem(upc:String, completionHandler:@escaping ((String) -> ())){
    let url = "https://api.upcdatabase.org/product/" + upc + "/APIKEYPLACEHOLDER"

    let urlObj = URL(string:url)

    URLSession.shared.dataTask(with: urlObj!) { (data, response, error) in
        do {
            let parsedData = try JSONSerialization.jsonObject(with: data!) as! [String:Any]

            for (key, value) in parsedData {
                if( key == "description") {
                    var itemName = value as! String
                    completionHandler(itemName)
                }
            }
        }catch{
            print("error")
        }

    }.resume()
}

var itemName:String = "null"
grabItem(upc: "0070847811169") { (item) in
    print(item) /// THIS PRINTS OUT THE ITEM NAME CORRECTLY
    itemName = item ///SWIFT SHOWS THAT THE ITEM NAME IS INDEED STORED
}

print(itemName) //THE ORIGINAL VALUE "NULL" IS STILL PRINTED

0 个答案:

没有答案