我怎样才能获得条带信息?

时间:2016-04-12 04:29:18

标签: ios swift stripe-payments

我正在尝试从条带对象追加某些信息,但我收到错误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)
                    }
                }
            }
        }
    })
 }

1 个答案:

答案 0 :(得分:0)

这里至少有两个问题。

您的屏蔽声明为我们提供了success: AnyObject?类型,因此success是一个可选的AnyObject,这就是我们可以假设的所有内容。

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