我有一个函数,它将一个闭包作为一个完成处理程序。它反过来调用一个也需要一个的函数。完成后,我想从第一个完成闭包中获取返回值,并调用第二个完成闭包。
func saveUserToCloud(user: MBUser, completionHandler: (CKRecord, NSError) -> Void) {
let userRecord = CKRecord(recordType: kMBUser)
userRecord.setObject(user.nickname, forKey: kMBUserNickname)
self.publicDb.saveRecord(userRecord, completionHandler: {record, error in completionHandler(record, error)})
}
}
这个函数抛出异常:
致命错误:无法打开Optional.None
func saveUserToCloud(user: MBUser, completionHandler: (CKRecord, NSError) -> Void) {
let userRecord = CKRecord(recordType: kMBUser)
userRecord.setObject(user.nickname, forKey: kMBUserNickname)
// this line throws the exception:
self.publicDb.saveRecord(userRecord, completionHandler: {record, error in completionHandler(record, error)})
}
}
我做错了什么?我有一个记录,在这种情况下没有错误。我想它正试图解开错误?
由于
答案 0 :(得分:0)
您的nickname属性可能是MBUser对象中的可选属性。您可以将其设为非可选项,或者如果您知道此功能中的设置,则执行以下操作:
userRecord.setObject(user.nickname!, forKey: kMBUserNickname)
如果昵称为零,那么您将在此处收到错误 我不认为问题是你的完成手柄