如果出现错误,我在显示警报时遇到问题。
我的想法是:每次我使用完成块从后端下载数据时,如果发生错误,我会发出警报。
query?.findObjectsInBackground(block: { (objects, error) -> Void in
if error != nil {
createAlert(error)
return
} else if let objects = objects {
}
由于我同时在ViewController
中拨打了多个电话,因此可能会发现自己同时发出超过2或3个警报。 "No Connection to the Internet"
。
它将不断重新加载警报,这对UI
而言是一种痛苦。
解决此问题的最佳做法是什么?
我的解决方案是将所有内容置于Singleton模式中,并确保当前没有显示其他任何警报。
有没有更好的方法?
答案 0 :(得分:1)
您可能更愿意在当前负责创建警报的类中使用可选属性 (var noConnectivityAlert
),而不是使用单例模式。
而不是createAlert()
方法,而是使用informUserAboutConnectivity()
方法。
func informUserAboutConnectivity() {
// If noConnectivityAlert is nil
// the method creates an alert and shows it.
// If the property is NOT nil
// do nothing (since the user is already informed).
}
当互联网连接恢复然后再次消失时,App Store中的某些应用会再次显示警报。
在这种情况下,当互联网连接回来时,您可以直接设置noConnectivityAlert = nil
,这样当连接丢失时,将很好地处理事情(将创建并显示新警报)。
顺便说一句,在iOS SDK中,单身人士并不经常使用。主要用于提供类的默认和最常见的用例(考虑UserDefaults
),或(当然)共享管理器/提供者。