Swift คืออะไร — ภาษาโปรแกรม Apple ฉบับสมบูรณ์
ภาษา Swift

Swift ภาษาโปรแกรม Apple iOS macOS SwiftUI Xcode Open Source Type Safety Protocol-oriented Server-side Vapor iPhone iPad Mac Apple Watch Vision Pro
| ภาษา | ใช้กับ | ความเร็ว | ความยาก | เหมาะกับ |
|---|---|---|---|---|
| Swift | Apple Platform | เร็วมาก | ปานกลาง | iOS macOS |
| Kotlin | Android | เร็ว | ปานกลาง | Android |
| React Native | Cross-platform | ปานกลาง | ปานกลาง | iOS + Android |
| Flutter | Cross-platform | เร็ว | ปานกลาง | iOS + Android |
| Objective-C | Apple (Legacy) | เร็วมาก | ยาก | Legacy Code |
Swift พื้นฐาน
=== Swift Basics ===
Variables and Constants
var name: String = "สมชาย" // Variable — เปลี่ยนค่าได้
let pi: Double = 3.14159 // Constant — เปลี่ยนค่าไม่ได้
var age = 25 // Type Inference
var isActive = true // Bool
Optional — ค่าอาจเป็น nil
var email: String? = nil
email = "user@example.com"
Optional Binding
if let unwrappedEmail = email {
print("Email: \(unwrappedEmail)")
}
Guard
func processUser(name: String?) {
guard let name = name else {
print("No name provided")
return
}
print("Hello, \(name)")
}
Collections
var fruits: [String] = ["Apple", "Banana", "Mango"]
var prices: [String: Int] = ["Coffee": 50, "Tea": 30]
var uniqueIds: Set<Int> = [1, 2, 3, 4, 5]
Control Flow
for fruit in fruits {
print(fruit)
}
เนื้อหาเกี่ยวข้อง — บทความที่เกี่ยวข้อง: Python Alembic Edge Deployment
switch age {
case 0..<18:
print("Minor")
case 18..<65:
print("Adult")
default:
print("Senior")
}
Functions
func greet(name: String, times: Int = 1) -> String {
return String(repeating: "Hello, \(name)! ", count: times)
}
แนะนำเพิ่มเติม — หนังสือเทรดที่ SiamCafeBook
Closures
let doubled = [1, 2, 3, 4, 5].map { $0 * 2 }
let evens = [1, 2, 3, 4, 5].filter { $0 % 2 == 0 }
let sum = [1, 2, 3, 4, 5].reduce(0, +)
Python equivalent for demonstration
from dataclasses import dataclass
@dataclass
class SwiftConcept:
concept: str
swift_syntax: str
python_equiv: str
difficulty: str
concepts = [
SwiftConcept("Variable", "var x = 10", "x = 10", "ง่าย"),
SwiftConcept("Constant", "let x = 10", "x = 10 (convention)", "ง่าย"),
SwiftConcept("Optional", "var x: Int? = nil", "x: Optional[int] = None", "ปานกลาง"),
SwiftConcept("Array", "[1, 2, 3]", "[1, 2, 3]", "ง่าย"),
SwiftConcept("Dictionary", '["key": "value"]', '{"key": "value"}', "ง่าย"),
SwiftConcept("Struct", "struct Point { var x, y: Int }", "@dataclass Point", "ปานกลาง"),
SwiftConcept("Enum", "enum Direction { case north }", "class Direction(Enum)", "ปานกลาง"),
SwiftConcept("Protocol", "protocol Drawable { }", "class Drawable(Protocol)", "ยาก"),
SwiftConcept("Closure", "{ $0 * 2 }", "lambda x: x * 2", "ปานกลาง"),
เนื้อหาเกี่ยวข้อง — บทความที่เกี่ยวข้อง: Mintlify Docs Cost Optimization ลดค่าใช้จ่าย —
]
print("=== Swift Concepts ===")
for c in concepts:
print(f" [{c.difficulty}] {c.concept}")
print(f" Swift: {c.swift_syntax}")
print(f" Python: {c.python_equiv}")
SwiftUI
=== SwiftUI — Modern UI Framework ===
Basic SwiftUI View
import SwiftUI
struct ContentView: View {
@State private var count = 0
@State private var name = ""
var body: some View {
NavigationStack {
VStack(spacing: 20) {
Text("Counter: \(count)")
.font(.largeTitle)
แนะนำเพิ่มเติม — คอร์สเทรด Forex ที่ iCafeForex
.bold()
HStack {
Button("- 1") { count -= 1 }
.buttonStyle(.bordered)
Button("+ 1") { count += 1 }
.buttonStyle(.borderedProminent)
}
TextField("Your name", text: $name)
.textFieldStyle(.roundedBorder)
.padding()
if !name.isEmpty {
Text("Hello, \(name)!")
.foregroundColor(.blue)
เนื้อหาเกี่ยวข้อง — ดูเพิ่มเติมเรื่อง Apache Kafka Streams Serverless Architecture
}
List {
ForEach(0..<5) { i in
NavigationLink("Item \(i)") {
Text("Detail for item \(i)")
}
}
}
}
.navigationTitle("My App")
}
}
}
API Call with async/await
struct User: Codable {
let id: Int
let name: String
let email: String
}
class UserViewModel: ObservableObject {
@Published var users: [User] = []
@Published var isLoading = false
func fetchUsers() async {
isLoading = true
guard let url = URL(string: "https://api.example.com/users") else { return }
do {
let (data, _) = try await URLSession.shared.data(from: url)
users = try JSONDecoder().decode([User].self, from: data)
} catch {
print("Error: \(error)")
เนื้อหาเกี่ยวข้อง — บทความที่เกี่ยวข้อง: Go Chi Router Automation Script
}
isLoading = false
}
}
@dataclass
class SwiftUIComponent:

component: str
use_case: str
platform: str
complexity: str
components = [
SwiftUIComponent("Text", "แสดงข้อความ", "All", "ง่าย"),
SwiftUIComponent("Button", "ปุ่มกด Action", "All", "ง่าย"),
SwiftUIComponent("TextField", "รับ Input ข้อความ", "All", "ง่าย"),
SwiftUIComponent("List", "แสดงรายการ Scrollable", "All", "ง่าย"),
SwiftUIComponent("NavigationStack", "จัดการหน้า Navigation", "All", "ปานกลาง"),
SwiftUIComponent("TabView", "Tab Bar ด้านล่าง", "iOS", "ปานกลาง"),
SwiftUIComponent("Map", "แสดงแผนที่", "All", "ปานกลาง"),
SwiftUIComponent("Charts", "แสดงกราฟ", "All", "ปานกลาง"),
]
print("\n=== SwiftUI Components ===")
for c in components:
print(f" [{c.complexity}] {c.component}")
print(f" Use: {c.use_case} | Platform: {c.platform}")
Career Path
# === iOS Developer Career ===
@dataclass
class CareerLevel:
level: str
years: str
salary_thb: str
skills: str
levels = [
CareerLevel("Junior iOS Dev", "0-2 ปี", "30,000-50,000", "Swift SwiftUI UIKit Xcode Git"),
CareerLevel("Mid iOS Dev", "2-4 ปี", "50,000-80,000", "Architecture MVVM Combine CoreData"),
CareerLevel("Senior iOS Dev", "4-7 ปี", "80,000-130,000", "System Design CI/CD Testing Lead"),
CareerLevel("Lead/Principal", "7+ ปี", "120,000-200,000", "Architecture Team Strategy"),
CareerLevel("Freelance iOS", "3+ ปี", "800-3,000/hr", "Full-stack iOS Client Management"),
]
print("=== iOS Developer Career ===")
for l in levels:
print(f" [{l.level}] {l.years}")
print(f" Salary: {l.salary_thb}")
print(f" Skills: {l.skills}")
# App Ideas for Portfolio
app_ideas = [
"Todo App: CRUD SwiftData Navigation",
"Weather App: API Call Async/Await Location",
"Expense Tracker: Charts CoreData Widget",
"Chat App: Firebase Real-time SwiftUI",
"Fitness Tracker: HealthKit Charts Notifications",
"Recipe App: API Search Favorites Offline",
]
print(f"\n\nPortfolio App Ideas:")
for i, a in enumerate(app_ideas, 1):
print(f" {i}. {a}")
# Learning Path
learning = [
"Week 1-2: Swift Basics (Variables Types Control Flow)",
"Week 3-4: Functions Closures Structs Classes",
"Week 5-6: SwiftUI Basics (Views Layouts Navigation)",
"Week 7-8: State Management (State Binding Observable)",
"Week 9-10: Networking API Calls JSON Decoding",
"Week 11-12: Data Persistence SwiftData CoreData",
"Month 4+: Build Portfolio Apps publish to App Store",
]
print(f"\n\nLearning Path:")
for i, l in enumerate(learning, 1):
print(f" {i}. {l}")
เคล็ดลับ
- SwiftUI: เริ่มจาก SwiftUI ไม่ต้องเรียน UIKit ก่อน
- 100 Days: ทำ 100 Days of SwiftUI ฟรี ครบถ้วน
- Project: ทำ App จริง Publish App Store ใส่ Portfolio
- WWDC: ดู WWDC Videos ทุกปี เรียนรู้ Feature ใหม่
- Community: เข้า Swift Forums iOS Dev Community
การนำความรู้ไปประยุกต์ใช้งานจริง
แหล่งเรียนรู้ที่แนะนำ ได้แก่ Official Documentation ที่อัพเดทล่าสุดเสมอ Online Course จาก Coursera Udemy edX ช่อง YouTube คุณภาพทั้งไทยและอังกฤษ และ Community อย่าง Discord Reddit Stack Overflow ที่ช่วยแลกเปลี่ยนประสบการณ์กับนักพัฒนาทั่วโลก
Swift คืออะไร
ภาษา Apple 2014 iOS macOS watchOS tvOS visionOS Open Source ปลอดภัย เร็ว Type Safety Optional Protocol ARC Xcode Swift 5.9
Swift ใช้ทำอะไรได้บ้าง
iOS iPhone iPad macOS Mac watchOS Apple Watch tvOS Apple TV visionOS Vision Pro Server Vapor Swift Playgrounds Cross-platform Linux
เริ่มเรียน Swift อย่างไร
Xcode Mac App Store ฟรี Swift Playgrounds Variables Types Functions SwiftUI Todo Calculator Apple Documentation 100 Days of SwiftUI
Swift เทียบกับภาษาอื่นอย่างไร
เร็วกว่า Python 10-100x ปลอดภัยกว่า C/C++ อ่านง่ายกว่า Objective-C คล้าย Kotlin Modern Safe Fast Apple Kotlin Android TypeScript Web
สรุป
Swift ภาษาโปรแกรม Apple iOS macOS SwiftUI Xcode Type Safety Optional Protocol-oriented Server-side Vapor Career iOS Developer Portfolio App Store





