因此,我创建了一个键盘应用程序扩展,该扩展使用Parse来获取一些所需的数据。我在键盘加载后初始化了Parse,如下所示:
func connectParser() {
// Initialize Parse
let configuration = ParseClientConfiguration {
$0.applicationId = "BlahBlahBlah123456"
$0.clientKey = "BlahBlahBlah123456"
$0.server = "https://parseapi.back4app.com"
}
Parse.initialize(with: configuration)
}
注意:初始化通常在AppDelegate中完成,但是由于这是一个App Extension,我在首先加载的主InputView中进行了初始化
当用户在加载键盘后从键盘上跳出然后尝试切换回键盘时,会发生此问题。扩展程序崩溃,出现以下错误:
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'解析已初始化。'
如何检查Parse是否已初始化,所以我不重新初始化它并导致崩溃?
所以我在任何地方都没有找到任何真正的解决方案,但是我找到了自己的解决方案,我将其保留在这里并回答我自己的问题,以防其他任何人遇到此问题:
基本上我检查是否为Parse.currentConfiguration() == nil
如果有,那么我知道Parse尚未初始化。我不知道这是否是解决此问题的最佳方法,因此,如果您有更好的选择,请添加它作为答案。
最终功能如下:
func connectParse() {
if Parse.currentConfiguration() == nil {
// Initialize Parse
let configuration = ParseClientConfiguration {
$0.applicationId = "BlahBlahBlah123456"
$0.clientKey = "BlahBlahBlah123456"
$0.server = "https://parseapi.back4app.com"
}
}
}