我有一个写入文件系统的异步保存方法。返回类型为void。我想在保存完成后立即更新ui。通常,我会使用then()方法执行此操作,但不适用于void返回类型?那么保存完成后如何通知我?
void save(Folder folder) async {
.....
}
答案 0 :(得分:4)
将返回类型更改为Future<void>
。
Future<void> save(Folder folder) async {
.....
}
然后您可以执行await save(...);
或save().then(...);
答案 1 :(得分:0)
您可以使用extension UIView {
func bindToKeyboard() {
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(_:)), name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
}
@objc func keyboardWillChange(_ notification: NSNotification) {
let duration = notification.userInfo![UIResponder.keyboardAnimationDurationUserInfoKey] as! Double
let curve = notification.userInfo![UIResponder.keyboardAnimationCurveUserInfoKey] as! UInt
let beginningFrame = (notification.userInfo![UIResponder.keyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue
let endFrame = (notification.userInfo![UIResponder.keyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
var deltaY = endFrame.origin.y - beginningFrame.origin.y
UIView.animateKeyframes(withDuration: duration, delay: 0.0, options: UIView.KeyframeAnimationOptions(rawValue: curve), animations: {
self.frame.origin.y += deltaY
}, completion: nil)
}
}
代替void。
Future<Null>