以 CKException 类型的未捕获异常终止

Posted

技术标签:

【中文标题】以 CKException 类型的未捕获异常终止【英文标题】:terminating with uncaught exception of type CKException 【发布时间】:2015-07-02 18:25:26 【问题描述】:

我不知道为什么,但是当我尝试将 CKRecord 保存在我的数据库中时,我的应用程序不断崩溃,并且我收到此错误消息,“以未捕获的 CKException 类型的异常终止。”任何输入将不胜感激。这是我的代码:

func saveCountryMood(countryToSave:String) 

    // Create CK record
    let newRecord:CKRecord = CKRecord(recordType: realCurrentCountry)
    newRecord.setValue(countryToSave, forKey: "Country")

    // Save record into public database
    if let database = self.publicDatabase 

        database.saveRecord(newRecord, completionHandler:  (record:CKRecord!, error:NSError!) -> Void in

            // Check for error
            if error != nil 

                // There was an error
                NSLog(error.localizedDescription)

            
            else 
                // There was no error
                dispatch_async(dispatch_get_main_queue()) 

                    // Refresh table
                    self.retrieveCountryMoods("")

                

            
        )
    

【问题讨论】:

提供有关异常的更多详细信息。哪条线路导致崩溃?错误信息是什么? 这一行崩溃:let newRecord:CKRecord = CKRecord(recordType: realCurrentCountry) 确切的错误信息如下:libc++abi.dylib: terminating with uncaught exception of type CKException 错误信息一定有更多内容。 啊,你是对的,我的错在这里----由于未捕获的异常'CKException'而终止应用程序,原因:'recordType(美国)包含无效字符'***首先抛出调用堆栈: 【参考方案1】:

您的记录类型中有一个空格。你可以用别的东西代替它。

您必须注意,在生产中您不能创建新的记录类型。所有记录类型必须已经存在(在开发时创建)。因此,必须在开发时创建 realCurrentCountry 的所有不同值。

【讨论】:

以上是关于以 CKException 类型的未捕获异常终止的主要内容,如果未能解决你的问题,请参考以下文章

Swift:以 NSException 类型的未捕获异常终止

Swift 项目以 NSException 类型的未捕获异常终止

以 NSException 类型的未捕获异常终止 - Xcode

以 NSException Timer Swift Crash 类型的未捕获异常终止

libc+abi.dylib:以 NSException 类型的未捕获异常终止

以 NSException 类型的未捕获异常终止 - 删除表视图行