2015-06-02 108 views
1

Swift + SQLite项目我试图用SQL查询在我的UI中填充4个按钮的数组。到目前为止我能做的最好的代码如下所示,但我相信它可以以更清晰的方式完成。我试图在同一个循环中同时执行SQL查询结果读取和按钮更改,但得到各种类型的类型不匹配和参考错误
任何建议将不胜感激。快速按钮阵列

var answerText: Array<String?> = ["","","",""] 

class ViewController: UIViewController { 

@IBOutlet var answerButton: Array<UIButton> = [] 

func displayQuestion(questionNumber: Int){ 

    let querySQL = "SELECT answer FROM answers WHERE answers.question = '\(questionNumber)'" 
    let results:FMResultSet? = myDatabase.executeQuery(querySQL, 
     withArgumentsInArray: nil) 
    var j=0 
    while results?.next() == true { 
     answerText[j] = results?.stringForColumn("answer") 
     j=j+1 
    } 
    j=0 
    for item in answerButton{ 
     var button:UIButton = item as UIButton 
     button.setTitle(answerText[j], forState: UIControlState.Normal) 
     j=j+1 
    } 
    } 
} 
+0

你能解释更多吗??????? –

+0

如果您的SQL查询需要很长时间会发生什么?然后我期望你的结果是空的,而你的其他代码执行 –

回答

2

由于您正在将数组声明为IBoutlet,因此您将收到引用错误。如果您的answerButton具有UIButton的对象应该不是@IBOutlet var answerButton:Array = []。 answerButton这样声明var answerButton:Array = []

请,如果你想测试下面的代码不仅仅是复制根据您的代码修改下面的代码和过去的入FUNC viewDidLoad中()您的视图 - 控制的,这会告诉你四个按钮就可以查看

 var answerText: Array<String?> = ["Button1","Button2","Button3","Button4"] 

    var answerButton: Array<UIButton> = [] 

    for var i = 0; i<=answerText.count; i++ { 

     var button = UIButton.buttonWithType(.System) as! UIButton 

     button.titleLabel!.font = UIFont.systemFontOfSize(12) 

     button.titleLabel!.lineBreakMode = .ByTruncatingTail 

     var numberOfButton = 5 
     let j = i 
     var y:CGFloat = (CGFloat)(j*690/(numberOfButton+1)-21); 
     button.frame.size.height = 42 
     button.frame.size.width = 150 
     button.frame.origin.y = y 
     button.frame.origin.x = 250.0 
     answerButton .insert(button, atIndex: i) 

    } 

for var i = 0; i<answerText.count; i++ { 

     var button:UIButton = answerButton [i] 

     button.setTitle(answerText[i], forState: UIControlState.Normal) 

     self.view .addSubview(button) 
    } 
} 
0
var buttons: [UIButton?] { 
    return [self.firstButton, self.secondButton, self.thirdButton] 
} 
+1

一些解释这段代码做什么以及它如何解决这个问题会很好。 – JJJ