我有一个 Cloud Code 函数,它返回多个对象,其中一些是 bool 值。我想在我的 Swift 代码中根据返回对象的 bool 值做一些事情,如下所示。但是,我在实现中不断遇到多个错误。
云代码
Parse.Cloud.define("checkCharge", function(request, response){
stripe.charges.retrieve(request.params.charge, function(err, charge) {
if(err){
console.log(err);
response.error(err);
}else{
console.log("Successfully checked the charge");
response.success(charge);
}
});
});
Swift 代码
PFCloud.callFunctionInBackground("checkCharge", withParameters: ["charge": orderCharge]) { (success: AnyObject?, error: NSError?) -> Void in
// if let responseJSON: [String: Bool] = success as? [String: Bool] {
if error == nil{
// let responseString = response as? String
// let chargeCaptured: Bool = success["captured"]
let objects = success as! NSArray
for object in objects {
let chargeCaptured = object["captured"] as! Bool
let chargeRefunded: Bool = success["refunded"]
let chargePaid: Bool = success["paid"]
if chargeCaptured == true || chargeRefunded == true || chargePaid == true{
print("charge already processed charge")
object.deleteInBackground()
}else{
self.storyboard
}
每当我尝试设置常量时,都会收到诸如下标使用不明确和类型 AnyObject 没有下标成员之类的错误。我还收到错误无法将 Bool 类型转换为 Bool。
最佳答案
问题:
- 在转换为
NSArray
后,您尝试像字典一样使用它。
代码:
看看这是否可以解决您的问题:
PFCloud.callFunctionInBackground("checkCharge", withParameters: ["charge": orderCharge]) { data, error in
//If there is an error, code will not proceed, it will exit
guard error == nil else {
print("error = \(error!)")
return
}
//If data is not a dictionary of the type [String : Any] it will exit
guard let objects = data as? [String : Any] else {
print("data is not of the type [String : Any]")
print("actual data type of data = \(type(of: data))")
return
}
if let chargeCaptured = objects["captured"] as? Bool,
let chargeRefunded = objects["refunded"] as? Bool,
let chargePaid = objects["paid"] as? Bool,
chargeCaptured == true || chargeRefunded == true || chargePaid == true {
print("charge already processed charge")
object.deleteInBackground()
}
else {
print("Else condition")
}
}
建议:
- 请尽可能使用 Swift 原生类型
- 使用
guard
、if let
有条件地解开可选值 - 如果您学习 Swift 基础知识将会很有帮助。
- 使用 Control + I 快捷键在 Xcode 中格式化代码
关于ios - 如何在 Swift 中从 Cloud Code 返回 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44233438/