12/08/2018, 13:07

Một số thư viện hay cho Swift

Trong bài viết hôm nay, mình xin giới thiệu đến bạn đọc một số thư viện mình cho là khá thú vị và hữu ích ở trên Github để các bạn tham khảo. Async Một thư viện rút gọn cú pháp Sugar trong Swift cho các thao tác bất đồng bộ (asynchronous dispatches) Trong Grand Central Dispatch (GCD) Async ...

Trong bài viết hôm nay, mình xin giới thiệu đến bạn đọc một số thư viện mình cho là khá thú vị và hữu ích ở trên Github để các bạn tham khảo.

Async

Một thư viện rút gọn cú pháp Sugar trong Swift cho các thao tác bất đồng bộ (asynchronous dispatches) Trong Grand Central Dispatch (GCD) Async sugar sẽ có cách viết rút gọn tiện lợi như sau

 Async.background {
    println("This is run on the background queue")
}.main {
    println("This is run on the main queue, after the previous block")
}

Thay vì cách viết dài trong GCD:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {
    println("This is run on the background queue")

    dispatch_async(dispatch_get_main_queue(), {
        println("This is run on the main queue, after the previous block")
    })
})

Thư viện hỗ trợ một số queue class đó là

Async.main {}
Async.userInteractive {}
Async.userInitiated {}
Async.utility {}
Async.background {}

SwiftDate

Thư viện này giúp chúng ta sử dụng NSDate một cách dễ dàng hơn.

let date = 5.days.fromNow // NSDate 5 ngày sau
let date = 4.hours.ago // NSDate 4 giờ trước
let date = (5.days + 2.hours - 15.minutes).fromNow
let date = (6.days + 2.hours).fromDate(anotherDate)
let date = (6.hours + 2.minutes).fromNow(region: inRome)

Ngoài việc khởi tạo dễ dàng, việc tính toán các biến thuộc NSDate cũng rất dễ dàng và thuận tiện, vậy nên các Aplication sử dụng nhiều ngày tháng NSDate mà sử dụng thư viện này sẽ thật là tuyệt vời.

Money

Từ cái tên của lib chúng ta cũng có thể hình dung được vai trò của lib này rồi nhỉ :roft: Đó là thư viện giúp chúng ta quản lý tiền nong một cách dễ dàng hơn. Đặc biệt là thư viện support rất nhiều đồng tiền của các quốc gia. VD như bạn làm một phép tính 100 + 200 nào đó mà không ghi đơn vị tiền thì khi aplication đang chạy trên vị trí của quốc gia nào nó sẽ tự động điền thêm đơn vị tiền tệ của nước đó đang sử dụng. Một điểm thêm nữa là thư viện support cả Apple Pay nữa. Thật là ngon phải không? (hehe)

Venice

Là thư viện đơn giản hoá việc sử dụng CSP(Communicating Sequential Processses). Tác giả khi tìm hiểu về thư viện này có liên tưởng đến việc sử dụng thư viện SwiftGo để đơn giản hoá việc communicate đến Golang ngày trước (hehe)

SwiftCop

Thư viện sử dụng để Vadilation Check, giúp chúng ta có thể mở rộng, tạo ra các custom vadilation và giúp lập trình viên tránh được việc phải viết lại nhiều lần phần vadilation đó trong các project khác.

Chúng ta hãy cùng xem một ví dụ về sử dụng lib này như sau:

class ViewController: UIViewController {
    @IBOutlet weak var validationLabel: UILabel!

    @IBOutlet weak var fullNameMessage: UILabel!
    @IBOutlet weak var emailMessage: UILabel!
    @IBOutlet weak var passwordMessage: UILabel!

    @IBOutlet weak var fullName: UITextField!
    @IBOutlet weak var emailTextField: UITextField!
    @IBOutlet weak var password: UITextField!

    // Let's create a cop!
    let swiftCop = SwiftCop()

    override func viewDidLoad() {
        super.viewDidLoad()

        //Let's add all the suspects
        swiftCop.addSuspect(Suspect(view: self.fullName, sentence: "More Than Two Words Needed"){
            return $0.componentsSeparatedByString(" ").filter{$0 != ""}.count >= 2
        })
        swiftCop.addSuspect(Suspect(view:self.emailTextField, sentence: "Invalid email", trial: Trial.Email))
        swiftCop.addSuspect(Suspect(view:self.password, sentence: "Minimum 4 Characters", trial: Trial.Length(.Minimum, 4)))
    }

    @IBAction func validateFullName(sender: UITextField) {
        self.fullNameMessage.text = swiftCop.isGuilty(sender)?.verdict()
    }

    @IBAction func validateEmail(sender: UITextField) {
        self.emailMessage.text = swiftCop.isGuilty(sender)?.verdict()
    }

    @IBAction func validatePassword(sender: UITextField) {
        self.passwordMessage.text = swiftCop.isGuilty(sender)?.verdict()
    }

    @IBAction func allValid(sender: UITextField) {
        let nonGultiesMessage = "Everything fine!"
        let allGuiltiesMessage = swiftCop.allGuilties().map{ return $0.sentence}.joinWithSeparator("
")

        self.validationLabel.text = allGuiltiesMessage.characters.count > 0 ? allGuiltiesMessage : nonGultiesMessage
    }

    @IBAction func hideKeyboard(sender: AnyObject) {
        self.view.endEditing(true)
    }
}

Và kết quả như bên dưới:

Device

Thư viện giúp hiển thị các thông số về loại thiết bị IOS, kích cỡ màn hình.

Device.version()

Check model thiết bị. (ví dụ iphone mấy ...)

Device.size()

Check kích cỡ màn hình

Device.type()

Check loại thiết bị (xem nó là iphone, ipod, ipad hay simulator)

Kết luận

rất nhiều thư viện hay cho Swift được viết làm cho công việc lập trình của chúng ta ngày càng trở nên dễ dàng phải không các bạn. Thiết nghĩ trong các dự án mình đang làm mà có phần nào chúng ta thấy hay + sau này có thể dùng lại nhiều thì các bạn hãy bớt chút thời gian viết lib nhé. Cùng xây dựng một cộng đồng Swift phát triển (lay2)

Tham khảo: Qiita

0