# Tech

Swift 2.0 : Хялбар iOS апп хийх

2017-02-08

Swift 2.0 цуврал хичээлийн дараагийн хэсэгт тавтай морилно уу.
Эхний хичээлээр та Swift хэлний үндсэн ойлголтуудыг сурч, гарын мөнгө буюу тип тооцоологч классыг үүсгэж үзсэн билээ.
Харин энэхүү хоёр дахь хичээлээр хялбар iOS апп хэрхэн хийхийг сурах болно. Бүр тодруулбал, тип тооцоологч класстаа юзер интерфэйс (user interface) хийх юм.
Би энэхүү хичээлийг iOS дөнгөж шинээр сурч байгаа эхлэн суралцагч болон туршлагатай хөгжүүлэгч хэн хэнд нь тохиромжтой байхаар бичихийг хичээв.
Энэхүү Swift 2.0 хичээлд зориулж Mac дээр чинь хамгийн сүүлд нийтэд гаргасан (public release) Xcode суулгаастай байх ёстойг анхаарна уу. (Хичээлийг бичиж байх үед Xcode 7.0 хамгийн сүүлийн хувилбар байлаа.) Swift хэл маш хурдтай өөрчлөгдөж байгаа бөгөөд бид шинэ хувилбар гарах бүрт уг хичээлийг засч байхыг амлахгүй ч хичээх болно. Хичээлийн код Xcode -ын хуучин хувилбар, туршилтын хувилбарт ажиллахгүй байж мэднэ.

Эхлэе

Xcode -оо нээгээд File\New\Project гэсэн цэс рүү ор. iOS\Application\Single View Application гэж сонгоод Next дарна.

Product Name гэсэн хэсэгт TipCalculator гэж оруулаад, LanguageSwift -г сонгож, DevicesiPhone -г сонгоно. Use Core Data болон өөр бусад чекбоксууд сонгогдоогүй байх ёстой. Next дарна.

Прожектоо сануулах фолдероо сонгоод Create-г дарна.
Ингэхэд Xcode прожектод шаардлагатай файлуудыг үүсгэсэн байгаа. Xcode -ийн зүүн дээд буланд байгаа iOS Simulator гэсэн сонголтоос iPhone 6S-г сонгож, Play товчин дээр дарж аппаа тестлэж болно.

Хэрэв ямар нэг асуудал гараагүй бол та доорх зурагт үзүүлсэн шиг хоосон цагаан дэлгэцийг харах болно.

Одоогоор хоосон байгаа энэхүү дэлгэцийг бид өөрсдийн шаардлагад нийцүүлэн дүүргэх юм.

Модел үүсгэх нь

Бүх зүйлс дэс дараатай байдагчлан юзер интерфэйс үүсгэхээсээ өмнө аппынхаа моделийг үүсгэх хэрэгтэй. Модел гэдэг бол өгөгдөлтэй, тэрхүү өгөгдөл дээр ажиллах үйлдэлтэй классыг (нэг болон нэлээд хэдэн) хэлдэг.

Энэхүү хичээлээр бидний бүтээх аппын модел нь өмнөх хичээлд үүсгэсэн TipCalculator класс бөгөөд энд нэрийг нь өөрчилж TipCalculatorModel болгоно.

Ингээд энэхүү модел классыг үүсгэхийн тулд : File\New\File рүү ороод iOS\Source\Swift File -г сонгоод Next дээр дарна. Нэрийг TipCalculatorModel.swift гэж өгөөд Create дээр дарна.

Санамж: Плэйграунд файлд байгаа кодыг аппаас дуудаж ашиглах боломжгүй. Плэйграунд бол зөвхөн туршилтын болон прототайп кодонд зориулагдсан тул хэрэв энд бичигдсэн кодыг апп-даа ашиглах бол Swift файл руу шилжүүлэх хэрэгтэй. Яг энд хийж байгаа шиг.
Өмнөх хичээлийн TipCalculator.swift файлыг нээж TipCalculator классыг (зөвхөн классын кодыг, доор байгаа тестийн кодыг оруулахгүйгээр TipCalculatorModel.swift файл руу) хуулж тавиад дараах өөрчлөлтийг хийгээрэй :

1. Классын нэрийг TipCalculatorModel болгож өөрчилнө
2. total болон taxPct-г тогтмолоос хувьсагч болгож өөрчилнө (учир нь аппыг ашиглаж байгаа хэрэглэгч эдгээр утгыг өөрчилж байх юм)
3. Мөн subtotal тогтмолыг компьютэд проперти (computed property) болгоно. Үүний тулд subtotal пропертийг зарласан хэсгийг дараах кодоор солино :
var subtotal: Double {
get {
return total / (taxPct + 1)
}
}

Компьютед проперти нь үнэндээ ямар ч утга агуулдаггүй. Харин бусад утга өөрчлөгдөх бүрт тооцоологдон гардаг. Энд, subtotal -ийн утга total болон taxPct-ийн шинэ утга бүрт харгалзан бодогдож гарна гэсэн үг.

Санамж: Хэрэв хүсвэл компьютед пропертид сеттер тавьж өгч болно.
Дараах хэлбэртэй байна :

var subtotal: Double {
get {
return total / (taxPct + 1)
}
set(newSubtotal) {
//...
}
}

Таны тавьж өгсөн сеттер өөрийг нь тодорхойлсон бусад илэрхийллийг мөн өөрчилдөг (жишээ нь, total болон taxPct-ийн утга newSubtotal-с хамаарч өөрчлөгдөнө гэсэн үг). Гэхдээ энэ боломж бидний хийж байгаа апп -д ямар ч үүрэггүй тул энэ удаад ашиглахгүй.

4. init хэсэгт байгаа subtotal-г сет хийж байгаа мөрийг устгана
5. Файл дотор байгаа бүх коментийг устгана

Хэрэв дээрх өөрчлөлтийг зөв хийсэн бол файл чинь дараах байдалтай харагдана :

import Foundation
class TipCalculatorModel {
var total: Double
var taxPct: Double
var subtotal: Double {
get {
return total / (taxPct + 1)
}
}
init(total: Double, taxPct: Double) {
self.total = total
self.taxPct = taxPct
}
func calcTipWithTipPct(tipPct: Double) -> Double {
return subtotal * tipPct
}
func returnPossibleTips() -> [Int: Double] {
let possibleTipsInferred = [0.15, 0.18, 0.20]
var retval = [Int: Double]()
for possibleTip in possibleTipsInferred {
let intPct = Int(possibleTip*100)
retval[intPct] = calcTipWithTipPct(possibleTip)
}
return retval
}
}

Аппын модел бэлэн боллоо. Одоо үзэгдэх хэсгийг буюу view -ээ хийцгээе!

[үргэлжлэлийг тун удахгүй]

Сэтгэгдэл

Unimedia LLC

Web development is changing very fast and each day is getting more complex.