2016-02-04 3 views
0

Я знаю, что неразрешенный идентификатор, как правило, довольно легко исправить в Swift, но я все равно испытываю некоторые трудности в любом случае. Я знаю, что я не объявляю экземпляр или переменную, в которой я нуждаюсь, но я не уверен в правильности этого. Вот мой код:Ошибка неразрешенного идентификатора в Swift?

import UIKit 
import Foundation 

func setButton(viewInfo:ChemistryViewInfo, inout button:UIButton, index:Int) { 
let buttonInfo = viewInfo.buttons[0] 
button.titleLabel?.text = buttonInfo.scale 
button.backgroundColor = buttonInfo.color 
} 


class ChemistryMasterViewController: UIViewController { 

    @IBOutlet weak var chemistryButton0: UIButton! 
    @IBOutlet weak var chemistryButton1: UIButton! 
    @IBOutlet weak var chemistryButton2: UIButton! 
    @IBOutlet weak var chemistryButton3: UIButton! 
    @IBOutlet weak var chemistryButton4: UIButton! 
    @IBOutlet weak var chemistryButton5: UIButton! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     if let viewInfo = viewInfo { 
      setButton(viewInfo, button: &chemistryButton0, index: 0) 
      setButton(viewInfo, button: &chemistryButton1, index: 1) 
      setButton(viewInfo, button: &chemistryButton2, index: 2) 
      setButton(viewInfo, button: &chemistryButton3, index: 3) 
      setButton(viewInfo, button: &chemistryButton4, index: 4) 
      setButton(viewInfo, button: &chemistryButton5, index: 5) 
     } 
} 

} 

И ...

import Foundation 

import UIKit 

let chemistryViewChoice = ["pH": 
ChemistryViewInfo(
    text: "pH", 
    description: "Most living things depend on proper pH level to sustain life.", 
    buttons: [ 
     ChemistryButtonInfo(scale: "6.2", color: UIColor(red: 212, green: 142, blue: 69)), 
     ChemistryButtonInfo(scale: "6.8", color: UIColor(red: 209, green: 122, blue: 31)), 
     ChemistryButtonInfo(scale: "7.2", color: UIColor(red: 196, green: 80, blue: 9)), 
     ChemistryButtonInfo(scale: "7.8", color: UIColor(red: 194, green: 74, blue: 58)), 
     ChemistryButtonInfo(scale: "8.4", color: UIColor(red: 208, green: 48, blue: 75))]), 
"Ammonia": 
    ChemistryViewInfo(
     text: "Ammonia", 
     description: "", 

     buttons: [ 
      ChemistryButtonInfo(scale: "0.00", color: UIColor(red: 244, green: 235, blue: 130)), 
      ChemistryButtonInfo(scale: "0.25", color: UIColor(red: 233, green: 233, blue: 156)), 
      ChemistryButtonInfo(scale: "0.50", color: UIColor(red: 223, green: 238, blue: 141)), 
      ChemistryButtonInfo(scale: "1.00", color: UIColor(red: 221, green: 236, blue: 210)), 
      ChemistryButtonInfo(scale: "3.00", color: UIColor(red: 202, green: 227, blue: 191)), 
      ChemistryButtonInfo(scale: "6.00", color: UIColor(red: 202, green: 216, blue: 173))]) 
] 

Наконец:

import Foundation 
import UIKit 

struct ChemistryButtonInfo{ 
    let scale: String 
    let color: UIColor 
} 

struct ChemistryViewInfo { 

    let text: String 
    let description: String 
    let buttons: [ChemistryButtonInfo] 
    } 

    extension UIColor { 
    convenience init(red:Int, green:Int, blue:Int) { 
     self.init(
      red: CGFloat(red)/255.0, 
      green: CGFloat(green)/255.0, 
      blue: CGFloat(blue)/255.0, 
      alpha: 1.0) 
    } 
} 

Ошибка находится на втором ViewInfo на если пусть заявление. Мне интересно, как правильно объявить viewInfo.

Любое предложение, ввод или ответы приветствуются.

Заранее спасибо.

+0

Использование массива IBOutlets упростит ваш код. См. [Как их использовать здесь] (http://stackoverflow.com/a/24805344/386738) – Daniel

+0

ваш класс 'ChemistryMasterViewController' должен содержать переменную экземпляра' var viewInfo: ChemistryViewInfo? ', Если вы собираетесь использовать это' if let' – Daniel

+0

Я сделал это, но ошибка, о которой я прокомментировал ниже в ответе @Predeep K, - это то, что появилось во всех строках внутри оператора if-let – Bigfoot11

ответ

0

Предполагая, что вы укажете переменную экземпляра viewInfo в классе ChemistryMasterViewController, вы можете это сделать.

var viewInfo:ChemistryViewInfo? //instance property declaration 

    if let viewInfo = self.viewInfo { 
    .... 
    .... 
    } 
+0

Буду ли я делать это в функции viewDidLoad? – Bigfoot11

+0

Да, но вы должны объявить переменную экземпляра viewInfo вне нее вместе с выводами, которые у вас есть –

+0

Я получаю сообщение об ошибке во всех строках внутри оператора if-let: 'Нельзя передавать неизменяемое значение типа 'UIButton' как inout argument'. Как я могу это исправить? – Bigfoot11

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