12/08/2018, 16:20

Swift 4 so với Swift 3 - Sự khác biệt và những tính năng mới

Từ khi apple ra ngôn ngữ swift mới, quá trình phát triển của nó cũng đã trải qua rất nhiều phiên bản, cùng với sự thay đổi rất lớn ở các bản 1.x, 2.x, 3.x, cho đến thời điểm 3.x thì swift đã dần đi vào ổn định cho nên tới bản 4.0 này cũng có sự thay đổi nhưng không nhiều như các lần cập nhật ...

Từ khi apple ra ngôn ngữ swift mới, quá trình phát triển của nó cũng đã trải qua rất nhiều phiên bản, cùng với sự thay đổi rất lớn ở các bản 1.x, 2.x, 3.x, cho đến thời điểm 3.x thì swift đã dần đi vào ổn định cho nên tới bản 4.0 này cũng có sự thay đổi nhưng không nhiều như các lần cập nhật trước, trong bài viết này tôi sẽ liệt kê đầy đủ các sự khác biệt chính cùng với những tính năng mới cập nhật trên phiên bản mới.

Hãy cùng điểm qua 3 nền tảng của swift: Là một ngôn ngữ tuyệt vời để code bởi Swift có những lợi thế riêng và nổi bật, cũng được cho là sẽ "sống lâu" hơn Objective-C Swift giúp chúng ta code nhanh, an toàn, và cấu trúc ngắn gọn dễ hiểu, tính ứng dụng rất cao, code swift có thể được build chạy trên rất nhiều thiết bị khác nhau, từ các thiết bị của apple cho đến cả dùng Swift để code server, thậm chí apple còn tạo ra swift playground trong công cụ xcode để cho bạn code đến đâu nó thể hiện ra ngay lập tức, mới mỗi 1 phiên bản của nó thì cũng dc cải thiệt và trở nên nhanh hơn, điều này đúng với swift 4, đây được đánh giá là phiên bản khá là ổn định, sẵn sàng để làm những dự án lớn.

1 tính năng rất tốt mà apple đã trang bị cho xcode 9, khiến bạn sẽ không phải lo lắng chuyện tương thích với swift 4 từ swift 3, bạn sẽ hiểu vì sao khi đọc xong bài viết này.

Bản thân ngôn ngữ sẽ không thể gọi là hữu dụng nếu thiếu đi 1 IDE với các tính năng tốt đi kèm, với cộng đồng lập trình của apple thì bạn có thể download phiên bản mới nhất của Xcode 9 từ Apple develop, đây công cụ khá là tốt mà apple hỗ trợ cho cộng đồng developer, bạn hoàn toàn có thể cài đặt nhiều bản xcode khác nhau trên máy tính cuả bạn.

Nếu bạn bắt đầu với 1 dự án mới hoàn toàn thì đó là điều rất tốt cho bạn, nhưng nếu bạn đang phát triển 1 dự án với swift 3.0 thì quá trình chuyển đổi lên Swift 4 là yêu cầu phải thực hiện.

Để bắt đầu tốt nhất ta nên thực hiện với playground để hiểu rõ những sự khác biệt khi dùng với phiên bản swift 4

Thông thường để chuyển đổi sang phiên bản swift mới hơn sẽ tốn khá nhiều effort đặc biệt là swift 2.x sang 3.x, có thể mất từ 2 tới 3 ngày, hoặc lâu hơn nếu dự án lớn hơn, nhưng từ 3 sang 4 lại khá dễ dàng, bạn có thể giảm thiểu thời gian hơn kha khá so với các phiên bản trước.

Xcode 9 không phải là chỉ hỗ trợ mỗi Swift 4, nên việc biên dịch dự án swift cũ hơn như 3.2 sẽ không phải là vấn đề quá to tát, mọi thứ luôn diễn ra 1 cách thuận lợi và dễ dàng. Điều này có thể bởi vì trình biên dịch Swift 4 hỗ trợ luôn cả việc biên dịch swift 3.2, thậm chí bạn có thể tìm được phần config sử dụng phiên bản swift nào trong cài đặt project, điều này sẽ rất hữu ích khi bạn dùng các thư viện bên thứ 3 mà thư viện đó chưa kịp cập nhật lên swift 4, ta hoàn toàn có thể giữ nó ở bản swift cũ hơn. Tuy nhiên, không chỉ có ngôn ngữ là thay đổi mà ngay cả SDKs cũng có 1 số sự đổi thay, cho nên việc cập nhật các thư viện lên swift mới cũng là điều bắt buộc cho dự án phát triển lâu dài.

Sau mỗi lần cập nhật apple cũng cung cấp cho chúng ta 1 công cụ chuyển đổi đi kèm, bạn có thể thực hiện bằng cách vào Edit -> Convert -> To Current Swift Syntax… sau đó chọn vào target mà bạn cần chuyển đổi

Sau khi bạn chọn thay đổi thì công cụ chuyển đổi sẽ ra soát toàn bộ target của bạn vào tạo 1 xem trước để bạn có thể xem sự thay đổi, nó có thể thay đổi hầu hêt code cho bạn nhưng không phải tất cả, có thể bạn sẽ phải tự tay thao tác ở 1 số nơi.

Hầu hết các nhà phát triển apple đều sử dụng cocoapods cho việc quản lý các open source từ bên thứ 3. như đã nói ở trên, không phải tất cả các thư viện bên thứ 3 đều nhanh chóng hỗ trợ swift 4, vì vậy bạn sẽ thấy lỗi trong khi biên dịch các thư viện này. Giải pháp đặt ra là bạn thêm 1 vài lệnh để nó có thể build trên phiên bản swift 3.2 trước, mở podfile mà cập nhật lại dạng như thế này:

old_swift_3_pods = [  
    'PodName1',
    'PodName2',
]

post_install do |installer|  
    installer.pods_project.targets.each do |target|
        if old_swift_3_pods.include? target.name
            target.build_configurations.each do |config|
                config.build_settings['SWIFT_VERSION'] = '3.2'
            end
        end
      end
end  

sau đó chạy lệnh "pod install" là ok sau đó bạn có thể biên dịch mà không gặp lỗi như trước nữa.

Bây giờ hãy cùng điểm qua 1 số thay đổi và bổ sung trong API

Bạn có thể duyệt toàn bộ 1 chuỗi String như sau:

let string = "Hello, Mind Studios!"

for character in string {  
    print(character)
}

Điều này cũng có nghĩa là bạn có thể dùng tất cả các Phương thức của collection với string như: count, isEmpty, map(), filter(), index(of:) và nhiều hơn nữa:

string.count // No more `string.characters.count`             
0