如何检查Parse是否已初始化?解决键盘扩展重复初始化崩溃问题
解决Parse重复初始化导致的键盘扩展崩溃问题
我之前也碰到过类似的情况,在应用扩展里因为重复初始化Parse导致崩溃,其实Parse SDK已经给我们提供了简单的判断方式。
你遇到的NSInternalInconsistencyException异常,原因就是每次键盘切换回来时,你的connectParser()方法都会再次调用Parse.initialize(),而Parse不允许重复执行初始化操作。
解决方案:初始化前检查状态
Parse框架有一个类属性isInitialized,可以直接用来判断Parse是否已经完成初始化。我们只需要在执行初始化代码前先做这个判断,避免重复调用即可。
修改后的代码如下:
func connectParser() { // 先判断Parse是否已经初始化,已初始化则直接返回 guard !Parse.isInitialized else { return } // 仅当未初始化时执行初始化逻辑 let configuration = ParseClientConfiguration { $0.applicationId = "BlahBlahBlah123456" $0.clientKey = "BlahBlahBlah123456" $0.server = "https://parseapi.back4app.com" } Parse.initialize(with: configuration) }
额外说明
这个isInitialized属性是Parse官方提供的状态检查方式,非常适配应用扩展这种可能多次触发加载逻辑的场景。如果你想进一步优化,也可以考虑把初始化逻辑放在键盘扩展的生命周期方法(比如InputViewController的viewDidLoad)里,但加上isInitialized的判断是最稳妥的兜底方案,确保不会因为任何重复触发的逻辑导致崩溃。
内容的提问来源于stack exchange,提问作者David Villegas
相关产品推荐
相关产品推荐

