2017-01-05 7 views
1

私はスウィフトとTipCalculatorアプリケーションを練習しています。 Swiftは私の新しい言語です。 Xcode 6.0のデモコードはXcode 8と一致しないため、2つの問題があります。スウィフト:スライダーの値及び数文字列変換

番号1号:引数ラベル「(整数:)」任意の利用可能なオーバーロードが一致していません。

let sliderValue = 
    NSDecimalNumber(integer: Int(customTipPercentageSlider.value)) 

番号2号:タイプ 'て、NumberFormatter 'CurrencyStyle'

func formatAsCurrency(number: NSNumber) -> String { 
    return NumberFormatter.localizedStringFromNumber(
     number, numberStyle: NumberFormatter.CurrencyStyle) 
} 

ない数を有していない以下のウェブリンク内のソースコードを参照してください。 http://www.informit.com/articles/article.aspx?p=2273069&seqNum=6

2つの問題を修正する方法を指定してください。

ありがとうございました。

答えて

0

回答#1:

あなたはint型にフロート(slider.valueタイプ)を変換したい場合は、単にそれを型キャスト。

let sliderValue = Int(customTipPercentageSlider.value) 

回答#2:

私はあなたがここにスウィフト3構文を探していると思います。

func formatAsCurrency(number: NSNumber) -> String { 
    return NumberFormatter.localizedString(from: number, numberStyle: .currency) 
} 
-1
let sliderValue = 
    NSDecimalNumber(integer: Int(customTipPercentageSlider.value)) 

整数のためNSDecimalNUmberのための初期化子がないとして、あなたはこのエラーを得ています。 3迅速で利用可能な 初期化子は、以下のとおりです。

init(decimal: Decimal) 
init(mantissa: UInt64, exponent: Int16, isNegative: Bool) 
init(string: String?) 
init(string: String?, locale: Any?) 

参照:https://developer.apple.com/reference/foundation/nsdecimalnumber

迅速

func formatAsCurrency(number: NSNumber) -> String { 
     return NumberFormatter.localizedString(from: number, number: .currency) 
    } 
+1

申し訳ありませんが、どのような私の答えは異なるのです(まあ、あなたを除いて最初の質問に答えなかった)? – dfd

+0

大きな助けをいただきありがとうございます。今はうまくいくようです。しかし、私は次のような新たな問題を抱えています。 –

+0

これは、 '/'演算子がコード行に間違っていることを示しています。let customPercent = sliderValue/decimal100 –

0

の通貨をフォーマットするため、私は次のようにコードを置くことを嬉しく思いますのためにあなたがこれを使用することができます。 、Xcodeのは「/」二項演算子を示し、コードの最後の行に関してはタイプのオペランドに適用することはできません「のInt」と「NSDeimalNumber」

@IBAction func calculateTip(_ sender: Any) { 
    func sliderValueChanged(_ sender: Any) { 
    } 
    let inputString = inputTextField.text // get the user input 
    let sliderValue = Int(customTipPercentageSlider.value) 
    let customPercent = sliderValue/decimal100 
+0

この問題の解決策については、私の答えをご覧ください。また、あなたのコードを更新するのはあなたの記事の中で、答えとしてではありません。 –

0

@のDFDの回答に加えて、私はDoubleを使用することをお勧めしますIntへの変換が容易であるため、NSDecimalNumberの代わりにtypeを使用します。したがって、あなたはあなたのdecimal100変数そうのように初期化した場合:

var decimal100: Double = Double() 

は、その後、あなたが問題に次のコードを使用することができます。ダウン投票

let inputString = inputTextField.text // get the user input 
let sliderValue = Int(customTipPercentageSlider.value) 
let customPercent = Double(sliderValue)/decimal100 
関連する問題