2016-11-11 15 views
-1

現在、私はストライプを使用しているIOSアプリケーションです。あなたが意味した;私はストライプカードオブジェクト(下の画像)を実装しようとしたとき、私は開封されていないラップではないオプションタイプ[文字列]の 」タイプを言っラインオプションの値[文字列]がラップされていません

var expMonth: NSNumber = Int(expArr[0])! 
var expYear: NSNumber = Int(expArr[1])! 

にコンパイラエラーを得ました!または??を使用してください。

func buttonPressed(_: UIButton) { 

    let creditCard = STPCardParams() 
    creditCard.number = cardNumberTextField.text 
    creditCard.cvc = cvvTextField.text 

    if (expDateTextField.text?.isEmpty == nil){ 

     let expArr = expDateTextField.text?.components(separatedBy: "/") 
     if (expArr?.count)! > 1 { 

      var expMonth: NSNumber = Int(expArr[0])! 
      var expYear: NSNumber = Int(expArr[1])! 

      creditCard.expMonth = expMonth.uintValue 
      creditCard.expYear = expYear.uintValue 

このエラーを修正するにはどうすればよいですか?あなたの助けに感謝します!

+1

あなたのコードでexpArrとは何ですか? – User511

+0

expArr =有効期限配列。私はユーザーに "MM/YYYY"のような形式を入力させたいと思っています –

答えて

-1

あなたexpArrは、私が疑われるオプションである、最初にそれをアンラップしてみてください。また

var expMonth: NSNumber = NSNumber(value: Int(expArr![0])!) 
var expYear: NSNumber = NSNumber(value: Int(expArr![1])!) 

私がするNSNumberがポインタ型であるが、それが変更された可能性があるとして、あなたは直接のNSNumberにint型を割り当てることができさえわからないんだけどスウィフト3.

+0

こんにちはJacos。応答ありがとう!あなたがコード化したのと同じようにラップを解除すると、「式のタイプが文脈なしであいまいです」という別のエラーが発生しました。 –

+0

はい、NSNumberにintを直接割り当てることはできませんが、私の修正された答えのキャストを見てください。 –

+0

hi jacob。どうもありがとうございます。私は今あなたの方法を適用しています! –

-1

にするNSNumberにint型からの変換:

NSNumber(value: intValue) 
+0

こんにちは。私は本当にあなたの助けに感謝します!あなたはこれに正しかった。 var expYear:NSNumber = NSNumber(値:Int(expArr![1])!)エラーがなくなりました。 –

-1

あなたexpArrはタイプ[String]?です。これを確認するには、変数名を強制的にクリックします。

そして、それはオプションであるため、ここで配列内のアイテムにアクセスする前に、あなたはそれをアンラップする必要があります。それをアンラップ

var expMonth: NSNumber = Int(expArr[0])! 
var expYear: NSNumber = Int(expArr[1])! 

あなたは力でそれを行うことができ、次のいずれか

var expMonth: NSNumber = Int(expArr![0])! 
var expYear: NSNumber = Int(expArr![1])! 

また、より安全な条件付きバインディングで行うこともできます。

if let expirationDates = expArr { 
    var expMonth: NSNumber = Int(expirationDates[0])! 
    var expYear: NSNumber = Int(expirationDates[1])! 

    creditCard.expMonth = expirationDates.uintValue 
    creditCard.expYear = expirationDates.uintValue 

    // ... 
} 
関連する問題