Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Swift愛好会初心者ハンズオン(vol.31)

 Swift愛好会初心者ハンズオン(vol.31)

Satoru Ohguchi

May 20, 2018
Tweet

More Decks by Satoru Ohguchi

Other Decks in Technology

Transcript

  1. ͸͡Ίʹ • ຊ೔ͷਐΊํ • αϯϓϧϓϩάϥϜΛ׬੒͢Δ͜ͱΛΰʔϧͱ͠·͢ɻ • ࠷ॳʹ֓ཁͳͲΛઆ໌͠·͢ɻ • ͻͱ·ͱ·Γຖʹઆ໌ɺ࣮ࡍ΍ͬͯ௖͘ͷ܁Γฦ͠Ͱ͢ɻ •

    ਵ࣌ɺ࣭໰͍ͯͩ͘͠͞ɻ • ૢ࡞ͷ෼͔Βͳ͍఺ͳͲ͸ɺϝϯλʔʹϔϧϓΛٻΊͯ Լ͍͞ɻ • άϧʔϓͰॿ͚߹͍ͳ͕ΒਐΊ͍͚ͯͨͩΔ͜ͱ΋ظ଴͠ ͍ͯ·͢ɻ •
  2. ม਺Λఆٛ // ໰୊Λ֨ೲ var csvArray:[String] = [] // औΓग़ͨ͠໰୊Λ֨ೲ var

    questionArray:[String] = [] // ม਺ var questionCount = 0 // ग़୊਺ var correctCount = 0 // ਖ਼ղ // ఆ਺ let total = 3 // ग़୊਺ let waitQuestion = 0.8 // දࣔͷִؒ
  3. ໰୊ΛDTW͔Β഑ྻʹ // CSVϑΝΠϧͷಡΈࠐΈ func loadCSV(filename : String)->[String] { // ฦ٫஋ͷॳظԽ

    var csvStr:[String] = [] // CSVΛಡΈࠐΜͰArrayʹ if let csvPath = Bundle.main.path(forResource: filename, ofType: "csv") { do { var csvData = try String(contentsOfFile: csvPath, ɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹencoding: String.Encoding.utf8) csvData = csvData.replacingOccurrences(of: "\n", with: "") csvStr = csvData.components(separatedBy: .newlines) } catch let error as NSError { print(error.localizedDescription) } } return csvStr }
  4. ໰୊දࣔ // ໰୊දࣔ func nextProblem() { // questionArrayͷॳظԽ questionArray.removeAll(keepingCapacity: true)

    if questionCount < total { // questionArrayʹ৽ن໰୊Λ֨ೲ questionArray = csvArray[questionCount].components(separatedBy: ",") // දࣔ಺༰Ληοτ quizNumberLabel.text = "ୈ\(questionCount+1)໰" quizQuestion.text = questionArray[0] uiButton1.setTitle(questionArray[2], for: .normal) uiButton2.setTitle(questionArray[3], for: .normal) uiButton3.setTitle(questionArray[4], for: .normal) uiButton4.setTitle(questionArray[5], for: .normal) } else { // ໰୊Λશͯදࣔͨ͠ޙͷॲཧ(ޙͰهड़) } } }
  5. ճ౴Λબ୒ͨ͠Β൑ఆ // ਖ਼ޡ൑ఆ @IBAction func btnAction(_ sender: UIButton) { //

    ਖ਼ղͱϘλϯͷλά൪߸͕ಉ͡ͳΒਖ਼ղ if sender.tag == Int(questionArray[1]) { answerImage.image = UIImage(named: "correct.png") correctCount += 1 } else { answerImage.image = UIImage(named: "incorrect.png") } // ճ౴දࣔͷ༗ޮԽ(0.8ඵؒ) answerImage.isHidden = false DispatchQueue.main.asyncAfter(deadline: .now() + waitQuestion) { self.answerImage.isHidden = true } // ࣍ͷ໰୊จݺͼग़͠ questionCount += 1 nextProblem() }
  6. ը໘ભҠΛهड़ w 4FRVFΛ࢖ͬͯ஋Λ౉͢ͷͰ౉͢஋Λఆٛ w ը໘ભҠΛ͢Δ // Segue Ͱ஋Λ౉͢ override func

    prepare(for segue: UIStoryboardSegue, sender: Any?) { let sVC: ResultViewController = (segue.destination as? ResultViewController)! sVC.correct = correctCount } // Storyboard Segue ͷ Identifier ΛҾ਺ʹఆٛͯ͠ը໘ભҠ DispatchQueue.main.asyncAfter(deadline: .now() + waitQuestion) { self.performSegue(withIdentifier: "toResultViewController", sender: nil) }
  7. 2VJ[ͷWJFX%JE-PBEΛهड़ // ը໘දࣔ׬ྃޙʹಈ͘ϝιου override func viewDidLoad() { super.viewDidLoad() // ໰୊ͷಡΈࠐΈ

    csvArray = loadCSV(filename: "loveswift") // ը໘ͷॳظԽ answerImage.isHidden = true // ໰୊දࣔ nextProblem() }