1. main
func initEverydayString() {
// 取得系统时间
dateFormatter.dateFormat = "yyyy-MM-dd"
let dayStr = dateFormatter.stringFromDate(date)
// 发送GET请求,得到“每日一句”内容并增加到UI中
let param: Dictionary = ["date" : dayStr]
Alamofire.request(.GET, urlEverydayAPI, parameters: param).responseJSON {
response in
var tmp = response.result.value?.objectForKey("note")
var cnString = String(tmp)
tmp = response.result.value?.objectForKey("content")
var enString = String(tmp)
if (cnString != "nil"){
cnString = cnString.substringFromIndex(cnString.startIndex.advancedBy(9))
cnString = cnString.substringToIndex(cnString.endIndex.advancedBy(-1))
}
if (enString != "nil"){
enString = enString.substringFromIndex(enString.startIndex.advancedBy(9))
enString = enString.substringToIndex(enString.endIndex.advancedBy(-1))
}
self.cnEverydayString.lineBreakMode = NSLineBreakMode.ByWordWrapping
self.cnEverydayString.numberOfLines = 0
self.enEverydayString.lineBreakMode = NSLineBreakMode.ByWordWrapping
self.enEverydayString.numberOfLines = 0
self.cnEverydayString.text = cnString
self.enEverydayString.text = enString
}
}
func initDB() {
// 在系统沙盒中,将Voca.txt逐行读出,并存入数据库db.sqlite3
// 找到沙盒路径
let file = "Voca.txt"
if let dir : NSString = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true).first {
let path = dir.stringByAppendingPathComponent(file);
print(path)
let dbPath = dir.stringByAppendingPathComponent("db.sqlite3")
do {
// 将Voca.txt内容读出,逐行存入数组stringArr中,
// 数组元素为Voca.txt中每行的字符串
let text2 = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding)
print(text2)
let tmp: String = text2 as String
let stringArr = tmp.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet())
// 建立数据库,表名CET4
let db = try Connection(dbPath)
let cet4Table = Table("CET4")
let wordID = Expression<Int64>("id")
let word = Expression<String>("word")
let translate = Expression<String>("translate")
let proficiency = Expression<Int64>("proficiency")
// 声明表中元素,wordID为主键
try db.run(
cet4Table.create{
t in
t.column(wordID, primaryKey: true)
t.column(word)
t.column(translate)
t.column(proficiency)
}
)
// 将stringArr中的字符串在进行拆分后放入表中
for (var i = 0; i<stringArr.count; i=i+1) {
var index = stringArr[i].characters.indexOf(".")!
var wordTmp = stringArr[i].substringToIndex(index)
var transTmp = stringArr[i].substringFromIndex(index)
var insert = cet4Table.insert(word <- wordTmp, translate <- transTmp, proficiency <- 0)
var rowid = try db.run(insert)
}
}
catch {
print("something has happened in selectView")}
}
}
2.查单词
// 发送GET请求,接受单词释义
@IBAction func searchButton(sender: AnyObject) {
if (searchText.text != nil) {
let param: Dictionary = ["word" : searchText.text]
Alamofire.request(.GET, searchWordURL, parameters: param).responseJSON{ response in
let tmp = response.result.value?.objectForKey("data")?.objectForKey("definition")
var ret = String(tmp)
if (ret != "nil") {
ret = ret.substringFromIndex(ret.startIndex.advancedBy(9))
ret = ret.substringToIndex(ret.endIndex.advancedBy(-1))
self.translateText.text = ret
}
else{
self.translateText.text = "没有释义"
}
}
}
}
3.统计图
// 数据初始化,提供一些需要图表化得参数
func initData() {
do {
if (try db.scalar(cet4Table.select(wordID.max)) == nil){
wholeWord = 0
recitedWord = 0
irrecitedWord = 0
}
else {
wholeWord = try db.scalar(cet4Table.select(wordID.max))!
for row in try db.prepare("SELECT proficiency FROM CET4"){
if ((row[0]! as! Int64) == 3) {
recitedWord = recitedWord + 1
}
}
irrecitedWord = wholeWord - recitedWord
print(wholeWord)
print(recitedWord)
}
}
catch {
wholeWord = 0
recitedWord = 0
irrecitedWord = 0
}
}
// 初始化pie图
func initPieChart() {
pieChart.noDataText = "u may as well add data!"
if (wholeWord != 0){
// 设置pie图参数,包括元素个数,值,图表颜色,元素意义等
var chartDataEntries: [ChartDataEntry] = []
var dataEntry = ChartDataEntry(value: Double(recitedWord), xIndex: 1)
chartDataEntries.append(dataEntry)
dataEntry = ChartDataEntry(value:Double(irrecitedWord) , xIndex: 2)
chartDataEntries.append(dataEntry)
var chartDataSet = PieChartDataSet(yVals: chartDataEntries, label: " ")
chartDataSet.colors = ChartColorTemplates.colorful()
let xVal: [String] = ["已背", "未背"]
let chartData = PieChartData(xVals: xVal, dataSet: chartDataSet)
pieChart.data = chartData
pieChart.animate(xAxisDuration: 2.0, yAxisDuration: 2.0)
}
}
4.背单词
// “知道”按钮的相应,显示下一个单词,并将当前单词的“proficiency”设为3
@IBAction func knownButton(sender: AnyObject) {
// 找到数据库中单词对应的行,并将当前单词的“proficiency”设为3
let tmp = cet4Table.filter(wordID == currentID)
try! db.run(tmp.update(proficiency <- 3))
// 先判断是否已经背完单词,再显示下一个单词
if (isMax() == false){
for row in try! db.prepare("SELECT id, word, translate, proficiency FROM CET4 WHERE id>" + String(currentID)){
if ((row[3]! as! Int64) < 3){
outputText.text = row[1]! as! String
currentID = row[0]! as! Int64
break
}
}
}
else{
knownButton.hidden = true
unknownButton.hidden = true
outputText.text = "you have successfully recited whole deal!"
}
}
// “不知道”按钮的相应,显示单词释义,显示“下一个”按钮,并将当前单词的“proficiency”的值+1
@IBAction func unknownButton(sender: AnyObject) {
let tmp = cet4Table.filter(wordID == currentID)
try! db.run(tmp.update(proficiency <- proficiency+1))
for row in try! db.prepare("SELECT translate FROM CET4 WHERE id = " + String(currentID)){
outputText.text = outputText.text! + (row[0]! as! String)
}
knownButton.hidden = true
unknownButton.hidden = true
nextButton.hidden = false
}
// "下一个"按钮的相应,先判断是否背完单词,再显示下个单词
@IBAction func nextButton(sender: AnyObject) {
knownButton.hidden = false
unknownButton.hidden = false
nextButton.hidden = true
if (isMax() == false){
for row in try! db.prepare("SELECT id, word, translate, proficiency FROM CET4 WHERE id>" + String(currentID)){
if ((row[3]! as! Int64) < 3){
outputText.text = row[1]! as! String
currentID = row[0]! as! Int64
break
}
}
}
else{
nextButton.hidden = true
outputText.text = "you have successfully recited whole deal!"
}
}
// 判断当前单词id是否已经达到数据库中最大id值
func isMax() -> Bool {
let max = try! db.scalar(cet4Table.select(wordID.max))
if (max == currentID){
return true
}
else{
return false
}
}
func initOutput() {
for row in try! db.prepare("SELECT id, word, translate, proficiency FROM CET4"){
if ((row[3]! as! Int64) < 3){
outputText.text = row[1]! as! String
currentID = row[0]! as! Int64
break
}
}
}
毕业设计的代码
最新推荐文章于 2023-03-03 11:22:47 发布