Kemaren baru aja upgrade project iseng-iseng gw aplikasi nizarnizar.com for iOS dari Swift 2.2 ke Swift 3.0. Yak ini salah satu cita-cita gw di tahun ini sih buat upgrade semua project iOS yang gw kerjain ke Swift 3.0. Seperti yang diketahui pas Apple World Wide Developer Conference tahun 2016 kemaren, apple memperkenalkan versi terbaru dari Swift yaitu Swift 3.0. Swift ini merupakan bahasa pemograman yang dibuat oleh apple dan merupakan project Open Source. Bahasa pemograman Swift ini emang masih baru dan masih akan terus di develop denger kabar gogon (gosip underground) yang beredar sebentar lagi mau rilis Swift versi 3.1 dan Apple WWDC tahun ini juga bakal dirilis Swift 4.0

Dan banyak juga pembuat library-library pihak ketiga atau third-party library juga mengupgrade library mereka ke Swift 3.0. Contohnya Alamofire. https://github.com/Alamofire/Alamofire
jadi biasanya ya developer-developer iOS yang menggunakan library-library third-party ini juga mau ga mau wajib upgrade project mereka juga agar bisa menggunakan library terbaru mereka.

Yang terbaru dari Swift 3.0 yang gw notice itu ada :

– Swift 3 penamaan setiap method memiliki penamaan di parameter yang diperluin kecuali kita menentukan sebaliknya (terserah kita yang buat :D)

Untuk liat perbedaan mendasar antara Swift 2.2 dan Swift 3.0 di bawah ini ada contohnya, kode ini adalah Swift 2.2 diikuti kode yang sama dalam Swift 3:

names.indexOf("Nizar")
names.index(of: "Nizar")

UIFont.preferredFontForTextStyle(UIFontTextStyleSubheadline)
UIFont.preferredFont(forTextStyle: UIFontTextStyle.subheadline)

override func numberOfSectionsInTableView(tableView: UITableView) -> Int
override func numberOfSections(in tableView: UITableView) -> Int

func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView?
func viewForZooming(in scrollView: UIScrollView) -> UIView?

tapi buat beberapa method yang tidak mau ada penamaan parameter di awal, di Swift 3.0 ini jadi underscore _

contoh kode di Swift 2.2

override func viewWillAppear(animated: Bool)
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int

contoh kode di Swift 3.0

override func viewWillAppear(_ animated: Bool)
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int

yang paling gw notice sih itu perubahannya hehe, tapi kalo liat artikel yang bahas swift 3.0 ada banyak juga sih yang berubah katanya pemanggilan beberapa method di framework-framework apple jadi lebih singkat, trus ada beberapa lagi sih perubahan di swift 3.0 ini hehe

Yang pertama dilakukan buat upgrade project ke Swift 3.0 ya sudah pasti upgrade atau install Xcode terbaru yaitu Xcode 8.x. Xcode ini merupakan salah satu tool yang paling penting untuk membuat aplikasi-aplikasi di Mac OS, iOS, TvOS, wathcOS. dan Swift 3.0 ini ada di Xcode versi 8.x. Karena gw baru-baru ini upgrade Xcode kemaren itu Xcode paling baru itu Xcode versi 8.2. Installnya bisa langsung lewat aplikasi App Store yang ad di Mac OS atau install manual dengan mendownload file Xcode di apple developer untuk yang sudah terdaftar di apple developer. Oiya untuk menginstall Xcode 8.x ini requirementnya OSX atau Mac OS kalian harus udah yang Sierra ya. Kalo ga percuma ntar ga bisa install hehe

Setelah menginstall Xcode terbaru, kemaren yang gw lakuin itu bukan langsung buka projectnya pake Xcode terbaru tapi upgrade dulu CocoaPods gw ke paling baru dan juga upgrade semua library-library yang gw pake di project ini dengan versi terbaru. Cocoapods ini salah satu tool yang sangat berguna juga untuk banyak developer-developer aplikasi iOS kaya gw, jadi fungsi cocoapods ini untuk manajemen library-library third party yang kita gunain di project kita, jadi untuk menambah, menghapus atau mengupdate library tinggal pake cocoapods ini aja,

CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over 27 thousand libraries and is used in over 1.6 million apps.

Abis selesai upgrade semua library via Cocoapods ke yang paling baru, baru deh buka projectnya pake Xcode terbaru tadi. Untungnya Xcode ini menyediakan tools yang bisa mengkonversi kode kita secara otomatis ke sintaks baru yang biasanya kemungkinan semua kode yang berhasil terkonversi itu sekitar 80%. 20% lagi itu beberapa kode bakal error dan kita harus betulin secara manual sampe project kita bisa di build

Abis buka project pake Xcode 8.x pasti ntar bakal muncul seperti gambar di bawah ini :
Screen Shot 2017-01-02 at 1.06.12 AM

Nah di Xcode 8.x ini sebenernya ada 2 versi Swift yang bisa kita gunain yaitu versi 2.3 dan versi 3.0, jadi kalo ada developer yang masih blm yakin mau migrasi project mereka ke Swift 3.0 mereka masih bisa gunain Swift 2.3 yang katanya sih ga beda jauh sintaksnya kaya Swift 2.2. Kemaren sih gw langsung pilih yang ke Swift 3.0. Abis klik button Convert ntar bakal muncul layar seperti ini di Xcode :
Screen Shot 2017-01-02 at 1.06.55 AM

Disitu kita disuruh milih target yang mana aja mau di convert ke Swift 3.0, inget ya jangan pilih/checklist target library-library third party karena tadi kan library itu udah kita update ke terbaru jadi harusnya udah support pake Xcode 8.x ini, jadi di layar atas itu kita cuma pilih emang yang pure project kita aja.

Abis kita klik button Next ntar bakal muncul lagi layar seperti ini, layar ini merupakan review dari tiap-tiap kelas dari kode swift 2.2 dengan kode Swift 3.0 yang bakal kita implementasikan.
Screen Shot 2017-01-02 at 1.08.42 AM
Jika kita sudah yakin kita bisa klik button Save

Kemaren sih beberapa ada yang error, jadi harus betulin manual tapi Alhamdulilllah kemaren ga banyak errornya, beberapa emang murni kesalahan dari proses otomatis Xcode itu ada yang ga ke konvert trus beberapa karena ada error ketika memanggil kode library third party yang harus diperbarui cara pemanggilannya hehe

Abis semua dibenerin errornya trus coba build lagi Alhamdulillah bisa hehe..
Screen Shot 2017-01-15 at 8.52.01 PM

Barusan dah gw bagusin beberapa kodenya sama tambahin indicator loading load more.

Bisa di diliat kodenya buat yang Swift 3.0 di github gw di link ini :
https://github.com/mnizar/nizarnizar.com

buat yang pengen liat kode Swift 2.2 ada di branch swift2.2

https://github.com/mnizar/nizarnizar.com/tree/swift2.2

maaf kalo masih jelek kodenya, maklum ini project aplikasi pertama yang dibuat pake Swift hahaha.. liat cerita lengkapnya kenapa gw buat project ini disini :D : nizarnizar.com for iOS available on Github

Share this post :Share on FacebookTweet about this on TwitterShare on TumblrPin on PinterestShare on LinkedInPrint this pageEmail this to someone