#21訪問檔案實作單字App

這次的作業是將單字的文字檔加入資產中並讀取出來。

再建立頁面和對應的類。

接著把26個字母的Button都拉到同一個IBAction中。

接下來利用按鈕上的標題來當做要傳的值到下一頁。

再來到顯示英文單字及句子的頁面,設置變數存儲要顯示的內容,並利用NSDataAsset重新放入剛放過Setset的文字檔,搜尋方式是使用檔名做搜尋。

取得檔案後要確認檔案的編碼是用什麼格式(這邊是用utf-16)。因為文字檔中太多行了,所以要進行拆解來顯示出我們要的文字。

設一個方法顯示英文單字及句子:

這邊學到一個很酷的功能,可以念出指定的字,這邊我指定念出單字就好。

@IBAction func speak(_ sender: UIButton) {
let wordAudio = AVSpeechUtterance(string: array[0])
let audio = AVSpeechSynthesizer()
audio.speak(wordAudio)
}

再來我們要做一個點選按鈕後將單字加到收藏者的方法(存值及取值):

@IBAction func btSave(_ sender: UIButton) {
sender.isSelected.toggle()
//用 if else寫加或刪
if sender.isSelected{
favArray.append(array)
}else{
favArray.removeAll { (favVocabulary) -> Bool in
if favVocabulary == array{
return true
}else{
return false
}
}
}
save(favVocabulary: favArray)

}
func save(favVocabulary:[[String]]){
if let data = try?JSONEncoder().encode(favVocabulary) {
UserDefaults.standard.setValue(data, forKey: "favVocabulary")
}
}

static func getFavVocabularys() -> [[String]]{
if let data = UserDefaults.standard.data(forKey: "favVocabulary"){
if let favVocabularys = try? JSONDecoder().decode([[String]].self, from: data){
return favVocabularys

}
}
return [[String]]()
}

在收藏者的頁面中設置變數接收剛剛存來的資料然後顯示在TabelView中,這邊我有設定可以將收藏者的單字做刪除的方法,記得執行完動作都要存值取值。

返回英文單字頁面,取得該英文單字對應的中文翻譯帶到下一頁,存到中文頁的變數中:

到中文頁面一樣取得Assset中的文字檔,再建立一個方法來接英文單字的翻譯:

顯示中文單字及句子:

回到storyboard伸縮下一頁想要有旋轉效果,所以所以TransitionselectFlip Horizo​​ntal。

實際操作:

github:

--

--