2015-10-10 1 views
9

Я пытаюсь сделать приложение в Xcode 7 с помощью Swift, и я пытаюсь преобразовать числа внутри текстового поля в целое число с помощью этого кода, let a = Int(percentLabel.text!)Ошибка при использовании Swift - член экземпляра не может использоваться для типа 'ViewController'

Но каждый раз, когда я пытаюсь это я получаю сообщение об ошибке, что говорит Instance Member 'percentLabel' cannot be used on type 'ViewController'

Я не знаю, почему я получаю эту ошибку, может быть, это ошибка, которую я уже нашел в Xcode 7.

Вот мой полный код.

import UIKit 

class ViewController: UIViewController { 
    @IBOutlet var tipSlider: UISlider! 
    @IBOutlet var splitSlider: UISlider! 
    @IBOutlet var billAmount: UITextField! 
    @IBOutlet var totalLabel: UILabel! 
    @IBOutlet var tipTotal: UILabel! 
    @IBOutlet var totalPerPerson: UILabel! 
    @IBOutlet var percentLabel: UILabel! 
    @IBOutlet var splitLabel: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
    let a = Int(percentLabel.text!) 

    @IBAction func tipChanged(sender: AnyObject) { 
     let currentValue = Int(tipSlider.value) 
     percentLabel.text = "\(currentValue)" 
    } 

    @IBAction func splitChanged(sender: AnyObject) { 
     let currentValue = Int(splitSlider.value) 
     splitLabel.text = "\(currentValue)" 
    } 

    @IBAction func amountChanged(sender: AnyObject) { 


    } 
} 

ответ

8

Этот код возвращает новое значение каждый раз, когда вы его вызываете. Я ожидаю, что это то, что вы ищете

var myInt: Int? { 
    return Int(percentLabel.text!) 
} 

вместо

let myString = percentLabel 
let myInt: Int? = Int(myString) 
11

Вы не можете иметь эти две линии вне вызова функции в классе

let myString = percentLabel 
let myInt: Int? = Int(myString) 

Вы не можете intialise свойство к стоимости другого имущества, вы не можете установить значение переменной по умолчанию, что и другое свойство. вы обычно делаете это в такой функции, как viewDidLoad или viewWillAppear. Ответ Арсена также должен работать, поскольку он попытается получить значение лениво или по вашему запросу.

let myString = percentLabel также не будет возвращать текст, вам нужно будет сделать let myString = percentLabel.text, но вы не можете присвоить это значение как свойство. вам нужно поместить его код в тело функции

+0

Я сделал изменения в коде, вместо выпускаемой туЗЬптд = percentLabel пусть Минт: Int? = Int (myString) Я должен был позволить a = Int (percentLabel.text!), Который дает мне ту же ошибку. Я был бы признателен, если бы вы могли объяснить это немного больше, потому что я не испытываю в Swift или программировании –

+0

Я обновил ответ. Это просто потому, что вы создаете свойство класса, которое зависит от значения другого свойства. Я не думаю, что вы можете это сделать. – Scriptable

+0

На самом деле, я думаю, я понял, что понял. Спасибо! –

Смежные вопросы

 Смежные вопросы