Thuta Learning
ရှာဖွေရန်
BasicMobile Developmentintermediate

iOS အတွက် Swift Quick Refresher

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • iOS အတွက် Swift Quick Refresher ကို ကြောက်စရာမလိုအောင် နားလည်မယ်
  • ကိုယ်တိုင် Xcode/SwiftUI code ကို run ကြည့်တတ်မယ်
  • Real project ထဲမှာ ဒီ concept ကို ချက်ချင်း အသုံးချတတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

Optional (`?`, `if let`, `guard let`) ကို iOS development မှာ constant သုံးရပါတယ် — API response, user input တွေမှာ 'value ရှိချင်မှ ရှိမယ်' ဆိုတဲ့ scenario တွေမှာ crash ကို ကာကွယ်ဖို့ အရေးကြီးပါတယ်။ Closure (`{ ... }`) ကို button action, list transformation တွေမှာ တွေ့ရမှာပါ။ Struct (`struct Todo { var title: String; var isDone: Bool = false }`) ကို app ရဲ့ data model (todo item, user profile) ကို ကိုယ်စားပြုဖို့ တွေ့ရမှာပါ — SwiftUI View တွေကလည်း struct ပါပဲ (class မဟုတ်ပါ) — ဒါက performance အတွက် intentional design ပါ.

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

`var name: String? = nil` လို့ ရေးထားရင် 'name' က nil ဖြစ်နိုင်တယ် ဆိုတာ compiler ကို ပြောတာပါ — `guard let unwrappedName = name else { return }` ရေးရင် name nil ဖြစ်ရင် function ကို early-return လုပ်ပြီး crash ကို ကာကွယ်ပါတယ်။ Button action ကို `Button("Save") { print("saved") }` လို့ trailing closure syntax နဲ့ ရေးတာကို SwiftUI (နောက် lesson) မှာ ထပ်ခါထပ်ခါ တွေ့ရမှာပါ.

အတူတူ ကြည့်မယ်

swift
// Optional safety
var name: String? = nil
func greet() {
    guard let unwrappedName = name else {
        print("No name provided")
        return
    }
    print("Hello, \(unwrappedName)!")
}

// Struct — will represent our UI data later
struct TodoItem: Identifiable {
    let id = UUID()
    var title: String
    var isDone: Bool = false
}
You should see
$ greet()
No name provided

၅ မိနစ် စမ်းကြည့်

`TodoItem` struct ကို ကိုယ်တိုင် ရေးကြည့်ပြီး, instance ၂-၃ ခု create ကာ Xcode Playground ထဲမှာ `print` output ကို ကြည့်ကြည့်ပါ။

သတိလေးတစ်ချက်

`!` ကို 'nil ဖြစ်နိုင်တဲ့အရာကို nil မဟုတ်ဘူးလို့ force ပြောတာ' ဆိုတာ သတိထားပါ — အမှန်တကယ် nil ဖြစ်နေရင် app crash ချက်ချင်း ဖြစ်ပါလိမ့်မယ်။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • `!` (force unwrap) ကို nil ဖြစ်နိုင်ခြေရှိတဲ့နေရာမှာ overuse ခြင်း — runtime crash ဖြစ်တတ်ပါတယ် (Kotlin ရဲ့ `!!` နဲ့ ဆင်တူတဲ့ risk ပါ)
  • Struct ကို class နဲ့ ရောထင်ခြင်း — struct က value type (copy-by-value), class က reference type (share-by-reference) ဆိုတာ ကွာခြားချက် ရှိပါတယ်

အခု ကိုယ်တိုင် စမ်းကြည့်

`TodoItem` struct ကို ကိုယ်တိုင် ရေးကြည့်ပြီး, instance ၂-၃ ခု create ကာ Xcode Playground ထဲမှာ `print` output ကို ကြည့်ကြည့်ပါ။

You'll know it worked when: $ greet() No name provided

iOS အတွက် Swift Quick Refresher | Thuta Learning