【发布时间】:2017-12-29 05:41:43
【问题描述】:
我有 plist 文件和数据库,在 plist 文件中有英文字母,在数据库行中有字符串,例如(伦敦),我将字符串转换为字符数组并附加到 plist 文件中。我通过(for循环)创建了14个UIButton,我从数据库行中获得了setTitle,并给出了shuffle,并从plist中添加了字母并给出了shuffle。
所以我的问题是当我从数据库中添加我的字符时,我只显示数据库中的字符并像这样改组:
但我不需要的只是我需要先将数据库中的所有字符添加到 setTitle 并打乱,然后从 plist 文件中添加剩余的空按钮,如下所示:
我该怎么做才能像上面的图片(第二张图片)?!
这是我的代码,写代码有什么问题?? :
let fileName : String = " EnglishLetters"
let fileExt : String = "plist"
let pathRes = Bundle.main.path(forResource: fileName, ofType: fileExt)
let pathDict = NSDictionary(contentsOfFile: pathRes!)
var letters : [String] = pathDict?.object(forKey: "Letters") as! [String]
for data in listdata { // SQLite database
let dataAnswer = data.ans // ans is a row in the SQLite database
let dataArrayAnswer = dataAnswer.characters.map{String($0)}
letters.append(contentsOf: dataArrayAnswer)
for char in dataArrayAnswer {}
for i in 1...14 {
let tileButton = UIButton(type: .roundedRect)
let lettersAns = dataArrayAnswer.shuffled()[letters.distance(from: id, to: id)] // id is parameter
tileButton.setTitle(lettersAns, for: .normal)
tileButton.titleLabel?.font = UIFont(name: "HelveticaNeueW23forSKY-Bd", size: 15)
tileButton.setTitleColor(.black, for: .normal)
tileButton.setBackgroundImage(UIImage(named: "Cell"), for: .normal)
tileButton.addTarget(self, action: #selector(moveTile(sender:)), for: .touchUpInside)
xAxis = xAxis + buttonWidth + space
view.addSubview(tileButton)
if i%7 == 0 {
xAxis = emptySpace / 2
yAxis = yAxis2 + space
}
}
}
}
【问题讨论】:
-
我认为你的逻辑有缺陷。你必须做的是,有一个要显示的字母数组:
lettersForAnswer:[String],将所有字母添加到你的答案中。然后,for i in lettersForAnswer.count.. 14 {//Add a random letter from all the available letters},随机播放,然后执行 for 循环来构造按钮。 -
对不起,你能把答案写得更清楚吗?因为注释中的代码不清楚! @Larme
-
我现在在做什么?! :(@Larme
-
有人帮我解决这个问题吗??
-
对不起,你能帮帮我吗? @Andy♦
标签: swift database sqlite uibutton plist