【发布时间】:2014-07-04 10:42:47
【问题描述】:
我有一个将闭包作为完成处理程序的函数。它反过来调用一个也接受一个函数的函数。完成后,我想从第一个完成闭包中获取返回值并调用第二个完成闭包。
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)})
}
}
我做错了什么?我有记录,在这种情况下没有错误。我想它正在尝试解开错误?
谢谢
【问题讨论】:
-
user不是调用中的可选值吗?我会检查user对象在状态上是否正确。 编辑: 也许也检查这个 SO 答案,似乎是一个相关问题: stackoverflow.com/a/24035639/250164