首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SwiftUI -我可以在按钮操作中使用完成处理程序吗?

SwiftUI -我可以在按钮操作中使用完成处理程序吗?
EN

Stack Overflow用户
提问于 2020-08-05 04:55:41
回答 1查看 403关注 0票数 1

我有一个获取新用户名和邮政编码的表单。当用户按下Save时,我使用Core Location获取邮政编码并查找相关的城市和州。此时,我想要一个完成处理程序将表单数据与城市和州一起保存。

但由于某些原因,完成部分并不起作用。我仍然在努力找出完成处理程序,但我想我已经很接近了……(显然,我需要处理错误处理,代码可以更简洁。)

代码语言:javascript
运行
复制
Button(action: {
    self.getCityStateFromPostalCode(zip: self.zip, completion: {
        //This isn't getting called
        let newCustomer = Customer(context: self.moc)
        newCustomer.custName = self.name
        newCustomer.custZip = self.zip
        newCustomer.custState = self.state
        newCustomer.custCity = self.city
        self.appDelegate.saveContext()
    })
}) {
    Text("Save")
}
代码语言:javascript
运行
复制
func getCityStateFromPostalCode(zip: String, completion: @escaping () -> ()) {
    let geocoder = CLGeocoder()
    var city = ""
    var state = ""
    
    geocoder.geocodeAddressString(zip) { (placemarks, error) in
        if let placemark = placemarks?[0] {
            if placemark.postalCode == zip {
                city = placemark.locality!
                state = placemark.administrativeArea!
                self.city = city
                self.state = state
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-05 05:19:47

在您的函数中,您没有调用completion参数:

代码语言:javascript
运行
复制
func getCityStateFromPostalCode(zip: String, completion: @escaping () -> ()) {
    let geocoder = CLGeocoder()
    var city = ""
    var state = ""
    
    geocoder.geocodeAddressString(zip) { (placemarks, error) in
        if let placemark = placemarks?[0] {
            if placemark.postalCode == zip {
                city = placemark.locality!
                state = placemark.administrativeArea!
                self.city = city
                self.state = state
            }
        }
        completion() // <- add this (may be moved depending on the `error` parameter
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63254909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档