Một số thư viện hay cho Swift
Bài đăng này đã không được cập nhật trong 8 năm
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("\n")
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
All rights reserved