如何获取条带信息?

How can I get the stripe information?

我正在尝试从条带对象附加某些信息,但出现错误 Ambiguous use of subscript。我如何解决它?我有不止一张存储在条带中的卡,当我打印成功时,我得到了我的卡的所有信息,出于安全原因我没有发布控制台。它还在 print(success![i])

处崩溃
    if let stripecust = object["Stripe"] as? String{
    PFCloud.callFunctionInBackground("Customer", withParameters: ["customerId" : stripecust]) { (success: AnyObject?, error: NSError?) -> Void in
            if(error == nil){
                print(success)

  for(var i = 0; i < success?.count; i++){
 print(success![i]) //crashes here with error "fatal error: unexpectedly found nil while unwrapping an Optional value"
            if let type = success!["data"] as? [[String:AnyObject]] //error here {
                self.cardtype.append(String(type[i]["brand"]!)) 

 }

    if let numbercard = success!["data"] as? [[String:AnyObject]] //error here {

    self.lastfour.append(String((numbercard[i]["last4"]!)))

 }

 if let holdercard = success!["data"] as? [[String:AnyObject]] //error here{

 self.cardholder.append(String(holdercard[i]["name"]!))

 }



   }


    }else{
    print(error)
                    }
                }
            }
        }
    })
 }

你这里至少有两个问题。

您的块声明为我们提供了 success: AnyObject? 类型,因此 success 是可选的 AnyObject,这就是我们可以假设的全部内容。

  1. 在你使用 success! 的任何地方,你都在强制展开那个可选的,声明你 知道 在那个时候它不会是 nil 。您的 unexpectedly found nil while unwrapping an Optional value 错误表明这不是一个安全或有效的假设。似乎有些情况 error 为零,但 success 也为零。您需要处理它或至少更仔细地检查它(保护语句和可选绑定是进行此类检查的好工具)。
  2. success!["data"] as? [[String:AnyObject]] 不是有效的语句,因为 success 的类型是 AnyObject?AnyObject 不支持下标运算符。 success 也可能是支持下标的更具体的类型,但现在编译器(或我们这些正在阅读您的问题的人)无法知道这一点。看起来 success 是一个带有 String "data" 键的字典,所以一个选择是在尝试使用下标之前先转换它:

if
    let successDictionary = success? as? [String: AnyObject],
    let data = successDictionary["data"] as? [[String: AnyObject]]
{
    ...
}