Это мой код. Я не знаю, что я сделал не так. Все проблемы находятся в функции steve. LebelText - это метка таймера, которая отделяется от другого контроллера. Поэтому я хочу, чтобы lebetText преобразовал его в int, чтобы вычесть 1 из него, а затем вернет его обратно в строку, чтобы отобразить номер.Неустранимая ошибка при распаковке выделенной строки (swift3)
Это контроллер вида a. Текстовое изложение - lebelText.
import UIKit
class testViewController: UIViewController {
@IBOutlet var lazel: UILabel!
@IBOutlet var plax: UIButton!
@IBOutlet var stopx: UIButton!
var timer = Timer()
var counter = 0.0
var isRunning = false
override func viewDidLoad() {
super.viewDidLoad()
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let DestViewController : restultViewController = segue.destination as! restultViewController
DestViewController.LebelText = lazel.text!
}
@IBAction func play(_ sender: Any) {
if !isRunning{
timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(testViewController.update), userInfo: nil, repeats: true)
}
plax.isEnabled = false
stopx.isEnabled = true
}
@IBAction func stop(_ sender: Any) {
plax.isEnabled = true
stopx.isEnabled = false
timer.invalidate()
isRunning = false
}
func update(){
counter += 0.1
lazel.text = String(format: "1%f", counter)
lazel.text = "\(counter)"
}}
это контроллер вида b. Цель состоит в том, чтобы использовать lebelText для преобразования его в int, чтобы вычесть 1 из него. Затем преобразуйте его обратно в строку, чтобы он отображался.
import UIKit
class restultViewController: UIViewController {
@IBOutlet var dxe: UILabel!
var LebelText = String()
let myInt = Int()
override func viewDidLoad() {
super.viewDidLoad()
steve()
}
func steve(){
var eq = LebelText
var intValue = Int(eq)
let vx = intValue! - 1
let ramit = String(vx)
dxe.text = ramit
}
a Немного больше деталей было бы хорошо, также ваше именование переменных не поможет понять, чего вы хотите достичь, может быть, вы могли бы объяснить это немного больше. –
Я не понимаю, что вы пытаетесь сделать здесь вообще. Во-первых, вы создаете строку под названием LebelText, без значения, тогда вы назначаете ее другой переменной eq, которую затем пытаетесь применить в Int. Что ... что происходит? – SaylorTwift2
@MagoNicolasPalacios. LebelText - это метка, которая выведена из другого контроллера представления. lebelText - это метка, на которой отображается номер, где таймер был остановлен. Затем я пытаюсь вычесть 1 из lebelText. Поэтому я пытаюсь взять lebelText из строки в int (где я вычитаю 1 из int), а затем преобразует int в строку. Поэтому я могу отображать на ярлыке dxe. –