#21訪問檔案實作單字App
Published in
5 min readNov 25, 2019
這次的作業是將單字的文字檔加入資產中並讀取出來。
再建立頁面和對應的類。
接著把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 Horizontal。
實際操作:
github: