#ios #swift3
#iOS #swift3
Вопрос:
Я пишу код на swift 3 и Xcode 8.
Вот код:
import Foundation
import UIKit
class CashTextFieldDelegate : NSObject, UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let oldText = textField.text! as NSString
var newText = oldText.replacingCharacters(in: range, with: string) as NSString
var newTextString = String(newText)
let digits = NSCharacterSet.decimalDigits
var digitText = ""
for c in newTextString.unicodeScalars {
if digits.contains(c) {
digitText.append(String(c))
}
}
// Format the new string
if let numOfPennies = Int(digitText) {
newText = "$" self.dollarStringFromInt(numOfPennies) "." self.centsStringFromInt(numOfPennies)
} else {
newText = "$0.00"
}
textField.text = newText as String
return false
}
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField.text!.isEmpty {
textField.text = "$0.00"
}
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true;
}
func dollarStringFromInt(value: Int) -> String {
return String(value / 100)
}
func centsStringFromInt(value: Int) -> String {
let cents = value % 100
var centsString = String(cents)
if cents < 10 {
centsString = "0" centsString
}
return centsString
}
}
для этой строки кода сверху :
newText = "$" self.dollarStringFromInt(numOfPennies) "." self.centsStringFromInt(numOfPennies)
Я получаю такую ошибку:
No ' ' candidates produce the expected contextual result type 'NSString'.
Не удалось устранить эту ошибку.
Любая помощь с небольшим объяснением будет оценена
Комментарии:
1. Вам нужно предоставить гораздо больше деталей. Показать, как объявляются все соответствующие переменные и функции.
2. Просто используйте интерполяцию строк .
Ответ №1:
В отличие от Swift 2, NSString
и String
не преобразуются автоматически друг в друга.
Попробуйте что-то вроде этого:
newText = ("$" self.dollarStringFromInt(numOfPennies) "." self.centsStringFromInt(numOfPennies)) as NSString
Вы можете дополнительно очистить это, используя согласованный тип — либо String
или NSString
повсюду (например, изменение возвращаемых функций и т. Д.).
Комментарии:
1. Последовал тому, что вы сказали, и сделал это. Но также добавлена метка значения. Это меня решило. newText = («$» self.dollarStringFromInt(значение: numOfPennies) «.» self.centsStringFromInt(значение: numOfPennies)) как NSString