Чтобы познакомиться с быстрым языком и какао, я решил создать небольшое преобразование базы, сначала из базы 2 в 10, затем я хотел бы добавить некоторые другие базы, такие как 16 и 5. Тем не менее, я не могу сделатьон работает правильно: Запущенное приложение Просмотр контроллера 4 цифры и более Отладчик удаляет пробелы
import Cocoa
class ViewController: NSViewController {
@IBOutlet weak var baseFrom: NSPopUpButton!
@IBOutlet weak var baseTo: NSPopUpButton!
@IBOutlet weak var myBase: NSTextField!
@IBOutlet weak var testLabel: NSTextField!
@IBOutlet weak var resultLabel: NSTextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
@IBAction func convertButton(_ sender: Any)
{
let popUpChoice = baseFrom.titleOfSelectedItem! //the choice of the popUpButton (only 2 possible yet)
var index : Int = 0 //useless
var baseToConvert : Int = 0 //stocks the 10 base
var myBaseFrom : Int // the original base (here : 2)
var isOk : Bool = true //check that the base is a 2 binary base
var test : Int
if popUpChoice == "2"
{
let setBase = myBase.stringValue
var correctedReverseBase : String = ""
for char in setBase
{
if char == "0" || char == "1" || char == "\0"
{
index += 1 // useless (needed for tests)
correctedReverseBase += String(char)
}
else
{
resultLabel.stringValue = "recommencer" // base not okay !
test = Int(char.unicodeScalars[char.unicodeScalars.startIndex].value)
if test > 32 && test < 127
{
isOk = false
}
}
}
myBaseFrom = 1
let reverseBase = String(correctedReverseBase.reversed())
// let correctedReverseBase = String(reverseBase.filter { !" \n\t\r".contains($0) })
if isOk // if the base is correct
{
for char in reverseBase
{
baseToConvert += Int(String(char))! * myBaseFrom // convert form 2 to 10
myBaseFrom *= 2
}
resultLabel.stringValue = String(baseToConvert) //show result
// resultLabel.stringValue = String(reverseBase)
}
}
}
}
приложение работает без сбоев, пока я не добавляю двоичные числа длиннее 4 цифр (он конвертирует 101 в 5, как вы можете видеть на моем втором рисунке).
Я не понимаю, почемуон просто перестает работать после 4 цифр.Я думаю, что проблема может исходить из NsTextField, но я не нашел ничего «полезного» в его настройках или документации.Я уверен, что это глупая ошибка, но, похоже, я не смогу избавиться от нее без вашей помощи.Заранее спасибо, Artiom
РЕДАКТИРОВАТЬ: На случай, если кому-то все равно: NSTextField добавляет 'á' (160 символов ascii), поэтому я добавляю, чтобы добавить условие в цикл, чтобы игнорировать такие символы.Я изменил код.