2017-01-05 3 views
1

Я практикую приложение TipCalculator с Swift. Свифт - мой новый язык. Так как демо-код с Xcode 6.0 не соответствует Xcode 8, есть две проблемы.Swift: значение слайдера и преобразование числовой строки

Номер 1 Проблема: Аргумент label '(integer :)' не соответствует любым доступным перегрузкам.

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

No. 2 Выпуск: Тип 'NumberFormatter' не имеет номера

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

Пожалуйста, смотрите исходный код '' CurrencyStyle в следующем веб-ссылку. http://www.informit.com/articles/article.aspx?p=2273069&seqNum=6

Просьба указать, как исправить две проблемы.

Спасибо.

ответ

0

Ответ # 1:

Если вы хотите преобразовать Float (тип slider.value) к Int, просто типаж его.

let sliderValue = Int(customTipPercentageSlider.value) 

Ответ # 2:

Я думаю, что вы ищете синтаксис Swift-здесь.

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

Он показывает, что оператор «/» неверен для строки кода: пусть 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 тип вместо NSDecimalNumber, потому что его легче конвертировать в/из Int. Таким образом, если вы инициализации decimal100 переменной следующим образом:

var decimal100: Double = Double() 

Затем вы можете использовать следующий код выпуска:

let inputString = inputTextField.text // get the user input 
let sliderValue = Int(customTipPercentageSlider.value) 
let customPercent = Double(sliderValue)/decimal100 
Смежные вопросы