Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Mac

Cách tạo ứng dụng với Swift 5 trên Mac

Swift là ngôn ngữ lập trình viết app/game cho iPhone, iPad, Mac, Apple Watch…; Apple thiết kế Swift để tận dụng hiệu năng tối đa từ thiết bị, Swift 5 mở rộng tập tính năng ấn tượng. Bài viết hướng dẫn dùng Swift 5, lý do nên dùng, và tóm tắt tính năng mới.

Muốn đi thẳng vào việc, chuyển tới Cách bắt đầu với Swift 5. Tổng quan rộng hơn: Hướng dẫn hoàn chỉnh lập trình Mac xem xét nhiều ngôn ngữ code trên macOS.

Tổng quan Swift 5

Swift 5 là ngôn ngữ lập trình do Apple phát triển, cho phép developer xây dựng app cho iOS, macOS, tvOS, watchOS.

Phiên bản 5 ra mắt cùng Xcode 10.2 tháng 3/2019 – chúng tôi nói chi tiết tính năng mới sau – nhưng Swift có từ lâu: Swift 1.0 ra tháng 9/2014. Theo Apple, Swift nhanh gấp 2.6 lần Objective-C và 8.4 lần Python.

Tại sao nên code Swift 5?

  1. Mã nguồn mở (Open source). Mã nguồn chương trình/ngôn ngữ công khai. Coder kiểm tra, sửa đổi, triển khai tự do. Apple: "Open Source khiến macOS mạnh mẽ, an toàn hơn, vì thành phần cốt lõi trải qua審查 đồng nghiệp (peer review) hàng chục năm."
  2. Dễ học. Apple xây dựng ngôn ngữ dễ dùng. Lý tưởng cho người mới vì cú pháp đơn giản. Nếu đã lập trình, sẽ thấy cú pháp/khái niệm Swift gần giống ngôn ngữ đã dùng.
  3. Nhanh. Thuật toán tìm kiếm Swift nhanh 2.6 lần Objective-C, 8.4 lần Python.
  4. An toàn. Làm việc với Swift không gặp code không an toàn, dùng quy ước lập trình hiện đại giữ bảo mật app.
  5. Playgrounds. Xcode có playgrounds – viết code Swift 5 thấy kết quả ngay. Xem: Cách dùng Swift Playgrounds.
  6. Chống lỗi thời (future-proof), phát triển cho nhiều nền tảng: iOS, macOS, watchOS, tvOS.
  7. Cải tiến liên tục. Swift 5 mang lại ABI stability mong đợi lâu: compiler Swift tương lai compile được code Swift 5+, việc migrate code sang Swift mới ít đau đớn hơn. Cũng nghĩa vendor OS nhúng Swift Standard Library vào OS, tương thích mọi app build Swift 5+.

Dự kiến nghe thêm phát triển Swift tại WWDC 2019.

Cách bắt đầu với Swift 5

Phát triển app iOS cần: Mac (MacBook, iMac, Mac mini) và phần mềm miễn phí Xcode (phiên bản 10.2+). Các bước:

  1. Mở Mac App Store trên Desktop.
  2. Tìm 'Xcode' thanh tìm kiếm.
  3. Nhấn 'Get' bên cạnh icon Xcode.
  4. Cũng tìm Xcode trên Mac App Store qua trình duyệt.

Cách tạo ứng dụng với Swift 5 trên Mac

Biên dịch trực tuyến (Online compilers)

Nếu không định triển khai app, dùng Swift online compiler – cách tuyệt vời học và chạy code Swift.

  • Online Swift Playground hỗ trợ Swift 5, test và chạy code.
  • Repl.it hỗ trợ Swift 4.2 (tháng 5/2019), cập nhật sắp tới.

Viết app đơn giản với Swift

Mở Xcode → File → New → Project. Chọn Single View App từ template.

Cách tạo ứng dụng với Swift 5 trên Mac

Đặt tên app, Organization name (tên công ty/bạn). Organization Identifier thường là URL công ty đảo ngược – ví dụ com.mycompany.myapp.

Chọn ngôn ngữ Swift → Next. Chọn vị trí lưu project trên Mac.

Cách tạo ứng dụng với Swift 5 trên Mac

Sau khi tạo project, màn hình hiện ra:

Cách tạo ứng dụng với Swift 5 trên Mac

Phát triển app đơn giản: user nhập tên vào text field, nhấn nút → nhận lời chào.

Vào file Main.storyboard bên trái. Thấy View rỗng. Click nút tròn góc trên phải mở Object Library. Kéo Text Field, Label, Button vào View.

Cách tạo ứng dụng với Swift 5 trên Mac

Cách tạo ứng dụng với Swift 5 trên Mac

Chọn Button trong View Hierarchy → đặt title "Generate greeting" ở Utility area bên phải.

Cách tạo ứng dụng với Swift 5 trên Mac

Double-click ViewController.swift → mở cửa sổ riêng.

Chọn Text Field trong View → giữ Ctrl kéo lên đầu class ViewController → tạo IBOutlet cho Text Field. Đặt tên "textField".

Cách tạo ứng dụng với Swift 5 trên Mac

Làm tương tự Label → IBOutlet tên "label". Button: kéo xuống dưới class để tạo IBAction method. Tên method "buttonTapped".

IBOutlet truy cập control storyboard trong code, IBAction phản ứng sự kiện tap button.

Thêm code sau vào method buttonTapped trong class ViewController:

if let name = textField.text {
    self.label.text = "Hello " + name
}

File ViewController.swift sau thay đổi:

Cách tạo ứng dụng với Swift 5 trên Mac

Sẵn sàng chạy app. Nhấn nút Run, app chạy trên Simulator.

User nhập tên vào Text Field → nhấn Button → Label dưới hiển thị "Hello" + tên nhập.

Cách tạo ứng dụng với Swift 5 trên Mac

Khái niệm Swift 5 (Cơ bản & Nâng cao)

Đã làm app đơn giản. Tiếp theo: phương pháp và đoạn code dùng cho project riêng.

In text trong Swift

print("Hello, world!")

Định nghĩa biến

Dùng 'let' cho hằng số, 'var' cho biến. Giá trị hằng không đổi sau gán; biến có thể đổi. Không bắt buộc khai báo kiểu tường minh. Cung cấp giá trị khi tạo hằng/biến → compiler suy diễn kiểu.

let constVar = 42
var numberVar = 27

Developer cũng có thể chỉ định kiểu. Ví dụ khai báo integer:

var numberVar: Int = 27

Comment trong Swift

Hai loại comment:

Một dòng:

// This is a comment

Nhiều dòng:

/* This is a
Multiline comment */

Ra quyết định (Decision making)

Cú pháp if statement:

if boolean_expression {
    /* statement(s) chạy nếu biểu thức true */
}

Ví dụ: Cách tạo ứng dụng với Swift 5 trên Mac

Cú pháp if...else:

if boolean_expression {
    /* chạy nếu true */
} else {
    /* chạy nếu false */
}

Ví dụ: Cách tạo ứng dụng với Swift 5 trên Mac

Cú pháp if...else if...else:

if boolean_expression_1 {
    /* chạy nếu biểu thức 1 true */
} else if boolean_expression_2 {
    /* chạy nếu biểu thức 2 true */
} else if boolean_expression_3 {
    /* chạy nếu biểu thức 3 true */
} else {
    /* chạy nếu không điều kiện nào true */
}

Ví dụ: Cách tạo ứng dụng với Swift 5 trên Mac

Switch statement

Cú pháp chung switch Swift 5. Nếu dùng fallthrough → tiếp tục case tiếp theo rồi thoát switch.

switch expression {
    case expression1:
        statement(s)
        fallthrough /* optional */
    case expression2, expression3:
        statement(s)
        fallthrough /* optional */
    default: /* optional */
        statement(s);
}

Ví dụ: Cách tạo ứng dụng với Swift 5 trên Mac

Mảng (Arrays)

Tạo mảng và dictionary dùng ngoặc vuông [ ], truy cập phần tử bằng index/key trong ngoặc. Tạo mảng:

var arrayList = ["Swift", "JavaScript", "Java", "PHP"]

Truy cập/sửa phần tử thứ 2 (index 2):

arrayList[2] = "React Native"

Tạo mảng rỗng dùng initializer:

var emptyArray = [String]()
emptyArray = []

Dictionary

var occupations = ["Steve": "Developer", "Kate": "Designer"]

Truy cập/sửa giá trị:

occupations["Steve"] = "CTO"

Tạo dictionary rỗng:

occupations = [:]

Set (Tập hợp)

Set giống mảng nhưng chỉ chứa giá trị duy nhất.

var a : Set = [1,2,3,4,5,6,7,8,9,0]

Swift có kiểu Optionals xử lý vắng mặt giá trị. Optional nói: "có giá trị, bằng x" hoặc "không có giá trị". Định nghĩa Optional bằng '?' hoặc '!'.

var myString: String?

'?': giá trị có thể có hoặc không.
'!': ban đầu có thể nil, nhưng khi dùng phải có giá trị, không thì lỗi runtime.
Không dấu: biến không optional, phải gán giá trị, không thì lỗi compile.

Hàm (Functions)

Cú pháp tạo hàm Swift: inputNum tên tham số kèm DataType, createStr tên hàm. '-> String' kiểu trả về. Hàm nhận Integer, chuyển String, trả về.

func createStr(Number inputNum: Int) -> String {
    return "\(inputNum)"
}

Gọi hàm:

createStr(Number: 345)

Class

Cú pháp class Car. Có thành viên tùy chọn numOfPersons và hàm displayDetails().

class Car {
    var numOfPersons: Int?
    func displayDetails() {
    }
}

Tạo instance:

var myCar: Car = Car()

Khởi tạo numOfPersons:

myCar.numOfPersons = 5

Closure trong Swift

Closure là hàm vô danh tổ chức thành block, gọi ở đâu cũng được như C/Objective-C. Closure gán cho biến. Cú pháp:

{
    (parameters) -> return type in
    statements
}

Ví dụ đơn giản: gán closure cho biến scname, dòng sau gọi closure bằng tên biến.

Cách tạo ứng dụng với Swift 5 trên Mac

Extension (Mở rộng)

Swift mở rộng chức năng class, struct, enum có sẵn bằng extension. Thêm chức năng được, nhưng không ghi đè chức năng cũ.

Ví dụ: class car, thêm extension để thêm property. Truy cập property speed trực tiếp như thuộc về class.

Cách tạo ứng dụng với Swift 5 trên Mac

Tuple

Tuple gom nhiều giá trị thành một giá trị hợp thành. Cú pháp:

var TupleName = (Value1, value2, … any number of values)

Ví dụ:

var error501 = (501, "Not implemented")

Tính năng mới Swift 5

Xem chi tiết các yếu tố mới.

Raw Strings (Chuỗi thô)

Swift 5 mang來 raw strings, dễ dàng tạo chuỗi chứa dấu ngoặc kép và backslash không cần escape sequence như phiên bản trước. Trong raw string, dấu ngoặc kép và backslash hiểu nghĩa đen thay vì ký tự kết thúc chuỗi hoặc escape.

Dùng raw string: thêm # đầu và cuối chuỗi:

Cách tạo ứng dụng với Swift 5 trên Mac

Vì backslash trong raw string hiểu nghĩa đen, dùng string interpolation trong raw string phải thêm # sau backslash:

Cách tạo ứng dụng với Swift 5 trên Mac

Cần dùng chuỗi "# bên trong raw string → thêm ## đầu và cuối:

Cách tạo ứng dụng với Swift 5 trên Mac

Tìm bội số nguyên (Finding integer multiples)

Swift 4.2 trở xuống: kiểm tra bội số dùng toán tử modulo (%). Swift 5 có method chuyên biệt, code rõ ràng hơn:

Cách tạo ứng dụng với Swift 5 trên Mac

Xử lý enum case tương lai (Handling future enum cases)

Switch Swift bắt buộc exhaustive (xử lý hết case). Phải xử lý tất cả case enum, hoặc chỉ case cụ thể + default xử lý phần còn lại:

Cách tạo ứng dụng với Swift 5 trên Mac

Vấn đề: nếu sau này dev thêm case enum mới, compiler không cảnh báo. Case mới sẽ rơi vào default – không phải lúc nào cũng muốn.

Swift 5 thêm attribute @unknown dùng cùng default:

Cách tạo ứng dụng với Swift 5 trên Mac

Với @unknown default, compiler cảnh báo nếu enum thêm case mới. Dev quyết định xử lý case mới hay không.

Làm phẳng nested optionals (Flattening nested optionals)

Nested optional tạo ra khi xử lý code throw dùng try?. Swift 5 làm phẳng nested optional thành optional thường. Khớp hành vi conditional type-casting và optional chaining.

Cách tạo ứng dụng với Swift 5 trên Mac

Ví dụ: biến model kiểu String? chứ không phải String?? như Swift 4.2.

Kiểu Result trong Standard Library

Swift 5 thêm kiểu Result vào Standard Library. Result cho cách sạch, đơn giản xử lý lỗi code bất đồng bộ. Triển khai enum với case success và failure. Cả hai dùng generics. success có associated value bất kỳ kiểu, failure bắt buộc associated value conform protocol Error. Ví dụ dùng Result:

Cách tạo ứng dụng với Swift 5 trên Mac

Ví dụ: implement ApiClient fetch names từ URL. Tham số 2 hàm fetchNames là completion closure nhận Result. Result trong ví dụ dùng [String] cho success, ApiError cho failure.

Dùng code trên như sau:

Cách tạo ứng dụng với Swift 5 trên Mac

Tính năng khác của Swift (từ phiên bản cũ)

Đã xem tính năng mới Swift 5 ở phần trước. Vẫn đáng biết tính năng giữ lại từ phiên bản cũ. Highlights từ Swift 4:

Strings

Từ Swift 4, String conforms to Collection protocol, lặp trực tiếp qua String. Cũng dùng được method/thuộc tính Collection: count, isEmpty, map(), filter(), index(of:)…

Cách tạo ứng dụng với Swift 5 trên Mac

Swift 4 tiếp cận chuỗi nhiều dòng khác biệt: dùng triple quotes thay vì escape dấu ngoặc kép:

Cách tạo ứng dụng với Swift 5 trên Mac

JSON Encoding và Decoding

Swift 4 đơn giản hóa quá trình archival/serialisation JSON so với Swift 3. Chỉ cần custom type implement protocol Codable (kết hợp Encodable + Decodable).

Cách tạo ứng dụng với Swift 5 trên Mac

Key Paths thông minh (Smarter Key Paths)

Swift 4 dễ dàng truy cập property đối tượng qua key paths.

Cách tạo ứng dụng với Swift 5 trên Mac

Kết hợp Class với Protocol

Swift 3 cho phép combine protocol khi tạo constant/variable. Swift 4 tiến xa hơn: thêm class vào mix cùng cú pháp. Ràng buộc đối tượng với class và protocol cùng lúc như Objective-C.

swap vs swapAt

swap(_:_:) mutating method Swift 3 lấy 2 phần tử mảng hoán đổi chỗ. Nhược điểm: phần tử hoán đổi truyền như tham số input để truy cập trực tiếp.

Swift 4 thay bằng swapAt(_:_:) lấy index 2 phần tử hoán đổi – vẫn hoán đổi nhưng an toàn hơn.

Dictionary và Set

Dùng initializer init(uniqueKeysWithValues:) của dictionary tạo dictionary mới từ mảng tuple.

Cách tạo ứng dụng với Swift 5 trên Mac

Nơi tốt nhất học thêm Swift 5

Nhiều tài nguyên giúp xây app Swift 5. Một số lựa chọn hay:

  • Apple Documentation: Nơi tốt nhất học Swift 5 – tài liệu chính thức.
  • eBook: Apple phát hành eBook cập nhật cực hữu ích: The Swift Programming Language (Swift 5.0).
  • Udemy: Dịch vụ video học trực tuyến lớn nhất, nhiều khóa Swift. Vài khóa Swift 5:
    • Swift 5 Programming for Beginners
    • iOS 12 & Swift 5: Build a To Do List App
  • Swift programming in easy steps - covers iOS 12 and Swift 5: Sách của tác giả bài này, dạy xây app iOS Swift 5 từ con 0, full minh họa. Mua trên Amazon.
  • Hacking with Swift: Cách tuyệt vời học phát triển Swift qua sách trên web Hacking with Swift. Duy trì bởi Paul Hudson – developer Swift giỏi, đam mê.

Tài nguyên thêm: Cách học Swift.