我是Swift编程的新手,最近我用Swift实现了我的应用程序的聚光灯搜索。一切都运行良好,但我现在得到的崩溃报告很少,我不知道什么是“部分应用”以及为什么它会崩溃。因为我无法在本地模拟它我试图通过使用来解决它崩溃日志。以下是崩溃报告......
Thread : Crashed: com.apple.root.default-qos
0 AppName 0x1076d4 partial apply for static spotLightSearchManager.(indexAllItem in _03019F3D5642F39F2DF678310DF7E384)() -> () (spotLightSearchManager.swift:77)
1 AppName 0x10761c partial apply for static spotLightSearchManager.(indexAllItem in _03019F3D5642F39F2DF678310DF7E384)() -> () (spotLightSearchManager.swift:73)
2 AppName 0x107730 partial apply for thunk (spotLightSearchManager.swift)
3 AppName 0x107808 partial apply for static spotLightSearchManager.(clearAllItem(spotLightSearchManager.Type) -> (OnCompletion : () -> ()!) -> ()).(closure #1) (spotLightSearchManager.swift:85)
4 CoreSpotlight 0x2ae7ce0d __45-[CSSearchableIndexRequest _finishWithError:]_block_invoke + 20
5 libdispatch.dylib 0x2492fdd7 _dispatch_call_block_and_release + 10
6 libdispatch.dylib 0x2493b7b9 _dispatch_root_queue_drain + 1572
7 libdispatch.dylib 0x2493b193 _dispatch_worker_thread3 + 94
8 libsystem_pthread.dylib 0x24ac8e0d _pthread_wqthread + 1024
9 libsystem_pthread.dylib 0x24ac89fc start_wqthread + 8
我正在尝试在应用启动期间重新索引搜索项目。
static func reIndexAllItem () {
if #available(iOS 9.0, *) {
clearAllItem(OnCompletion: indexAllItem)
} else {
// Fallback on earlier versions
APLog("SpotLight index not added for older versions")
}
}
}
static private func indexAllItem () {
for dataItem in APAuthUrlDataSource.sharedInstance().accountArray { // Crash logs points to this line.
addSearchIndexForItem(dataItem as! APAuthUrlDataItm)
}
} // Line number 77
static func clearAllItem (OnCompletion completion : (()-> Void)!) {
if #available(iOS 9.0, *) {
CSSearchableIndex.defaultSearchableIndex().deleteAllSearchableItemsWithCompletionHandler { (error) -> Void in
// On completion.
APLog("successfully cleared all index in spotlight search")
**completion()** //Line number 85
}
} else {
// Fallback on earlier versions
APLog("SpotLight index not cleared for older versions")
}
}
注意:从didFinishLaunchingWithOptions方法调用reindexAlltem。
任何帮助都非常感谢,提前致谢。
答案 0 :(得分:0)
似乎对APAuthUrlDataItm的强制转换失败了。我假设accountArray没有显式类型[APAuthUrlDataItm],否则你为什么需要那个演员?
考虑以下代码:
for dataItem in accountArray {
if let item = dataItem as? APAuthUrlDataItm {
addSearchIndexForItem(item)
}
}