Skip to main content

Bab 2: Mencoba Swift Lewat Playgrounds

Sekarang setelah kamu mengonfigurasi semua hal yang dibutuhkan untuk mulai mengembangkan aplikasi iOS, penulis ingin menjawab satu pertanyaan umum lain yang sering muncul dari para pemula sebelum melangkah lebih jauh. Banyak orang bertanya kepada penulis, keterampilan apa saja yang dibutuhkan untuk mengembangkan aplikasi iOS. Singkatnya, ada tiga area utama:

  • Belajar Swift — Swift adalah bahasa pemrograman yang kini direkomendasikan untuk menulis aplikasi iOS.
  • Belajar Xcode — Xcode adalah aplikasi pengembangan yang kamu gunakan untuk merancang UI aplikasi, menulis kode Swift, dan membangun aplikasi iOS.
  • Memahami iOS Software Development Kit (SDK) — Apple menyediakan SDK untuk para developer agar hidup kita menjadi lebih mudah. SDK ini dilengkapi dengan berbagai komponen dan API yang memungkinkan kamu mengembangkan aplikasi iOS. Sebagai contoh, framework SwiftUI yang akan dibahas di bab berikutnya adalah salah satu framework penting yang perlu kamu pelajari untuk membangun antarmuka pengguna dan animasi. Jika kamu ingin menampilkan halaman web di dalam aplikasi, SDK juga menyediakan browser bawaan yang bisa langsung kamu sematkan ke dalam aplikasi.

Kamu perlu membekali diri dengan pengetahuan di ketiga area tersebut. Memang terdengar banyak. Tapi jangan khawatir. Kamu akan mempelajari semua keterampilan ini secara bertahap seiring kamu membaca buku ini.

Sejarah Swift

Penulis akan memulainya dengan sedikit cerita tentang sejarah Swift.

Pada Worldwide Developer Conference (WWDC) tahun 2014, Apple mengejutkan seluruh developer iOS dengan meluncurkan bahasa pemrograman baru bernama Swift. Swift dipromosikan sebagai bahasa pemrograman yang “cepat, modern, aman, dan interaktif”. Bahasa ini lebih mudah dipelajari dan dilengkapi berbagai fitur yang membuat proses pemrograman menjadi lebih produktif.

Sebelum Swift diumumkan, aplikasi iOS sebagian besar ditulis menggunakan Objective-C. Bahasa ini telah ada selama lebih dari 30 tahun dan dipilih oleh Apple sebagai bahasa utama untuk pengembangan Mac dan iOS. Penulis telah berbicara dengan banyak calon developer iOS, dan mayoritas dari mereka mengatakan bahwa Objective-C sulit dipelajari dan sintaksnya terlihat aneh. Sederhananya, kode Objective-C sering kali membuat pemula merasa takut untuk mulai belajar pemrograman iOS.

Rilis bahasa pemrograman Swift bisa dibilang merupakan jawaban Apple atas keluhan-keluhan tersebut. Sintaks Swift jauh lebih rapi dan mudah dibaca. Penulis sendiri telah menggunakan Swift sejak versi beta pertamanya, yang berarti sudah lebih dari delapan tahun. Penulis bisa mengatakan bahwa kamu hampir pasti akan jauh lebih produktif saat menggunakan Swift. Bahasa ini benar-benar mempercepat proses pengembangan. Setelah kamu terbiasa dengan Swift, akan sangat sulit untuk kembali menggunakan Objective-C.

Menurut penulis, Swift akan menarik lebih banyak web developer, bahkan pemula sekalipun, untuk membangun aplikasi. Jika kamu seorang web developer yang sudah memiliki pengalaman pemrograman dengan bahasa scripting apa pun, kamu bisa memanfaatkan keahlian tersebut untuk mempelajari pengembangan aplikasi iOS. Mempelajari Swift akan terasa relatif mudah. Meski begitu, bahkan jika kamu benar-benar pemula tanpa pengalaman pemrograman sebelumnya, kamu tetap akan menemukan bahwa Swift adalah bahasa yang ramah dan nyaman digunakan untuk mengembangkan aplikasi.

Pada Juni 2015, Apple mengumumkan Swift 2 dan menjadikan bahasa pemrograman ini bersifat open source. Ini adalah langkah besar. Sejak saat itu, para developer menciptakan banyak aplikasi open source yang menarik dan luar biasa menggunakan Swift. Tidak hanya untuk mengembangkan aplikasi iOS, perusahaan seperti IBM bahkan mengembangkan framework web agar kamu bisa membuat aplikasi web menggunakan Swift. Kini, Swift juga bisa dijalankan di Linux.

Setelah rilis Swift 2, Apple memperkenalkan Swift 3 pada Juni 2016. Versi ini terintegrasi dengan Xcode 8 dan dirilis pada September 2016. Swift 3 dianggap sebagai salah satu rilis terbesar sejak kelahiran bahasa ini. Ada banyak sekali perubahan di Swift 3. API diubah namanya dan berbagai fitur baru diperkenalkan. Semua perubahan ini membuat bahasa Swift menjadi lebih baik dan memungkinkan developer menulis kode yang lebih rapi dan indah. Namun, di sisi lain, para developer juga harus mengeluarkan usaha ekstra untuk memigrasikan aplikasi mereka akibat perubahan besar tersebut.

Pada Juni 2017, Apple menghadirkan Swift 4 bersamaan dengan rilis Xcode 9, dengan lebih banyak peningkatan dan penyempurnaan. Versi Swift ini berfokus pada kompatibilitas ke belakang. Artinya, idealnya aplikasi yang dikembangkan dengan Swift 3 bisa dijalankan di Xcode 9 tanpa perubahan apa pun. Kalaupun perubahan diperlukan, proses migrasi dari Swift 3 ke Swift 4 jauh lebih mudah dibandingkan migrasi dari Swift 2.2 ke Swift 3.

Pada tahun berikutnya, Apple hanya merilis pembaruan minor dengan menaikkan versi Swift menjadi 4.2. Meskipun bukan rilis besar, versi ini tetap membawa banyak fitur bahasa baru untuk meningkatkan produktivitas dan efisiensi.

Pada akhir Maret 2019, Apple secara resmi merilis Swift 5, yang menjadi tonggak penting dalam sejarah bahasa pemrograman ini. Meskipun menghadirkan banyak fitur baru, perubahan terpentingnya adalah Swift runtime kini disertakan langsung di sistem operasi platform Apple, termasuk iOS, macOS, watchOS, dan tvOS. Ini sebenarnya merupakan kabar baik bagi calon developer. Artinya, Swift semakin stabil dan matang. Semua yang kamu pelajari di buku ini akan tetap relevan untuk rilis Swift di masa depan.

Tahun ini, bahasa Swift kembali diperbarui menjadi Swift 6.0 dengan lebih banyak fitur baru, termasuk dukungan untuk macros.

Jika kamu benar-benar pemula, mungkin ada beberapa pertanyaan di benak kamu. Mengapa Swift terus berubah? Jika terus diperbarui, apakah Swift sudah siap digunakan?

Hampir semua bahasa pemrograman berubah seiring waktu, begitu juga dengan Swift. Setiap tahun, fitur-fitur baru ditambahkan untuk membuatnya semakin kuat dan ramah bagi developer. Hal ini mirip dengan bahasa yang kita gunakan sehari-hari. Misalnya, bahasa Inggris juga terus berkembang dari waktu ke waktu. Kosakata dan frasa baru seperti freemium ditambahkan ke dalam kamus setiap tahun.

Semua bahasa berubah seiring waktu, dan ada banyak alasan mengapa hal ini terjadi. Tidak terkecuali Bahasa Inggris.

Sumber: https://www.english.com/blog/english-language-has-changed

Meskipun Swift terus berevolusi, bukan berarti bahasa ini belum siap digunakan di lingkungan produksi. Justru sebaliknya, jika kamu ingin membangun aplikasi iOS, kamu sebaiknya menggunakan Swift. Swift telah menjadi standar de facto untuk pengembangan aplikasi iOS. Perusahaan seperti LinkedIn, Duolingo, dan Mozilla sudah menulis aplikasi mereka sepenuhnya menggunakan Swift sejak versi awal. Sejak rilis Swift 4, bahasa pemrograman ini semakin stabil dan benar-benar siap digunakan untuk kebutuhan enterprise maupun produksi.

Mari Kita Mulai

Cukuplah dengan sejarah dan teori. Mari kita lihat langsung bagaimana bentuk Swift.

Untuk mencicip bahasa pemrograman Swift, bari kita lihat potongan kode berikut.

Objective-C

const int count = 10;
double price = 23.55;

NSString *firstMessage = @"Swift is awesome. ";
NSString *secondMessage = @"What do you think?";
NSString *message = [NSString stringWithFormat:@"%@%@", firstMessage, secondMessage];

NSLog(@"%@", message);

Swift

let count = 10
var price = 23.55

let firstMessage = "Swift is awesome. "
let secondMessage = "What do you think?"
var message = firstMessage + secondMessage

print(message)

Contoh pertama ditulis dengan Objective-C, sementara yang kedua ditulis dengan Swift. Mana yang lebih kamu pilih? Penulis akan menebak kamu memilih untuk menulis program dengan Swift, terutama bila kamu pusing dengan sintaks Objective-C. Swift lebih jelas dan mudah di baca. Tidak ada tanda @ dan titik koma diakhir setiap perintah.

Dua perintah berikut ini melakukan hal yang sama yaitu menggabungkan kalimat pertama dengan kalimat kedua. Penulis yakin kamu bisa menebak maksud dari kode Swift berikut:

var message = firstMessage + secondMessage

tapi kamu akan lebih pusing kalau melihat kode Objective-C berikut:

NSString *message = [NSString stringWithFormat:@"%@%@", firstMessage, secondMessage];

Mencoba Swift di Playgrounds

Penulis tidak ingin membuat kamu bosan dengan hanya menampilkan potongan kode. Tidak ada cara yang lebih baik untuk mengeksplorasi dunia pemrograman selain dengan langsung menulis kode. Xcode memiliki fitur bawaan bernama Playgrounds. Ini adalah lingkungan pengembangan interaktif yang memungkinkan developer bereksperimen dengan pemrograman Swift dan melihat hasil dari kode yang ditulis secara real-time. Sebentar lagi kamu akan memahami maksud penulis dan bagaimana Swift Playgrounds bekerja.

Dengan asumsi kamu sudah menginstal Xcode 16 (atau versi yang lebih baru), jalankan aplikasinya dengan mengklik ikon Xcode di Launchpad. Kamu akan melihat sebuah dialog awal.

Playground adalah file khusus di Xcode. Pada menu bagian atas, klik File > New > Playground… untuk membuat file Playground baru. Setelah itu, kamu akan diminta memilih template untuk Playground tersebut. Karena kita fokus mengeksplorasi Swift di lingkungan iOS, pilih Blank pada bagian iOS untuk membuat file kosong. Klik Next untuk melanjutkan.

Setelah kamu mengonfirmasi lokasi penyimpanan file, Xcode akan membuka antarmuka Playground. Tampilan layar kamu seharusnya terlihat seperti ini:

Di panel sebelah kiri layar terdapat area editor, yaitu tempat kamu menulis kode. Saat kamu ingin menguji kode dan melihat bagaimana hasilnya, tekan tombol Play. Playground akan langsung menginterpretasikan kode (hingga baris tempat tombol Play berada) dan menampilkan hasilnya di panel sebelah kanan. Secara default, Swift Playgrounds menyertakan dua baris kode. Seperti yang bisa kamu lihat, hasil dari variabel greeting langsung muncul di panel kanan setelah kamu menekan tombol Play pada baris ke-4.

Kita akan menulis beberapa kode di Playgrounds bersama-sama. Ingat, tujuan dari latihan ini adalah agar kamu merasakan langsung pengalaman memprogram dengan Swift dan mempelajari dasar-dasarnya. Penulis tidak akan membahas setiap fitur Swift. Kita hanya akan fokus pada topik-topik berikut:

  1. Constant, variabel, dan type inference

  2. Alur kontrol (control flow)

  3. Array dan dictionary

  4. Optional

Ini adalah topik-topik dasar yang perlu kamu ketahui tentang Swift. Kamu akan belajar melalui contoh. Namun, penulis cukup yakin kamu akan merasa bingung dengan beberapa konsep pemrograman, terutama jika kamu benar-benar baru dalam dunia pemrograman. Tidak perlu khawatir. Kamu akan menemukan saran belajar dari penulis di beberapa bagian. Ikuti saja saran tersebut dan teruslah belajar. Dan jangan lupa, ambil jeda sejenak ketika kamu merasa buntu.

Mantap! Mari kita mulai.

Constant dan Variabel

Constant dan variabel adalah dua elemen dasar dalam pemrograman. Konsep variabel (dan constant) mirip dengan yang pernah kamu pelajari di Matematika. Coba perhatikan persamaan berikut:

x = y + 10

Di sini, x dan y adalah variabel, sedangkan 10 adalah constant, yang artinya nilainya tidak berubah.

Dalam Swift, kamu mendeklarasikan variabel dengan kata kunci var, dan constant dengan kata kunci let. Jika persamaan di atas dituliskan dalam bentuk kode, hasilnya akan seperti ini:

let constant = 10  
var y = 10
var x = y + constant

Ketikkan kode di atas ke dalam Playgrounds, lalu tekan Play pada baris ke-5. Kamu akan melihat hasil seperti di bawah ini.

Kamu bebas memilih nama apa pun untuk variabel dan constant , selama namanya bermakna. Misalnya, kamu bisa menulis ulang kode yang sama seperti berikut:

let constant = 10  
var number = 10
var result = number + constant

Untuk memastikan kamu benar-benar memahami perbedaan antara konstanta dan variabel di Swift, ketikkan kode berikut untuk mengubah nilai constant dan number:

constant = 20  
number = 50

Setelah itu, tekan Shift + Command + Enter untuk mengeksekusi kode. Selain menggunakan tombol Play, kamu juga bisa menjalankan kode dengan shortcut keyboard.

Pada contoh ini, kamu mencoba menetapkan nilai baru pada constant dan variabel. Namun, begitu kamu mengubah nilai constant, Xcode langsung menampilkan error di console. Sebaliknya, tidak ada masalah sama sekali saat nilai number diubah.

Inilah perbedaan inti antara constant dan variabel di Swift. Setelah sebuah constant diisi dengan suatu nilai, kamu tidak bisa mengubahnya lagi. Jika kamu perlu mengubah nilai setelah diisi, gunakan variabel.

Memahami Type Inference

Swift menyediakan banyak fitur yang membantu developer menulis kode yang rapi dan mudah dibaca. Salah satu fitur tersebut disebut Type Inference. Potongan kode yang baru saja kita bahas sebelumnya sebenarnya bisa ditulis secara eksplisit seperti berikut ini:

let constant: Int = 10
var number: Int = 10
var result: Int = number + constant

Setiap variabel di Swift memiliki sebuah tipe data. Kata kunci Int setelah titik dua (:) menandakan bahwa tipe data variabel atau constant tersebut adalah bilangan bulat (integer). Bila data yang disimpan adalah bilangan desimal, maka kita gunakan tipe data Double.

var number: Double = 10.5

Ada beberapa tipe lain seperti String untuk data berupa teks dan Bool untuk data berupa boolean (true/false).

Sekarang kembali ke type inference, fitur keren yang ada di Swift ini memungkinkan kita untuk meniadakan penulisan tipe data secara eksplisit saat mendeklarasikan variabel atau constant sehingga kode menjadi lebih ringkas. Swift compiler bisa menebak tipe data yang dimaksud dengan melihat angka yang kita berikan. Inilah mengapa kita bisa menulis kode yang ringkas seperti ini:

let constant = 10
var number = 10
var result = number + constant

Angka yang ditulis (10) adalah bilangan bulat, dengan begitu tipe datanya secara otomatis diatur ke Int. Di Playgrounds, kita bisa menekan tombol option dan klik nama variabel yang ada untuk melihat tipe datanya yang diasumsikan langsung oleh compiler.

Pusing dengan banyaknya konsep pemrograman baru tadi?

Kamu tidak perlu menyelesaikan bab ini sekaligus. Istirahat saja jika sampai disini sudah membuatmu cukup puyeng. Bahkan kamu bisa melewatkan bab ini ke bab selanjutnya bila sudah tidak sabar untuk membuat aplikasi pertamamu. Kamu bisa kembali ke bab ini kapanpun untuk kembali belajar dasar-dasar Swift.

Bekerja dengan Teks

Sejauh ini, kita baru bekerja dengan variabel bertipe Int dan Double. Untuk menyimpan data berupa teks, Swift menyediakan sebuah tipe bernama String.

Untuk mendeklarasikan variabel bertipe String, kamu menggunakan kata kunci var, memberi nama variabel, lalu mengisinya dengan teks awal. Teks tersebut harus diapit oleh tanda kutip dua ("). Berikut contohnya:

var message = "The best way to get started is to stop talking and code."

Setelah kamu mengetikkan baris kode di atas di Playgrounds dan menekan Play, hasilnya akan langsung ditampilkan di panel sebelah kanan.

Swift menyediakan berbagai operator dan fungsi (atau metode) untuk memanipulasi string. Misalnya, kamu bisa menggunakan operator penjumlahan (+) untuk menggabungkan dua string:

var greeting = "Hello "  
var name = "Simon"
var message = greeting + name

Bagaimana jika kamu ingin mengubah seluruh kalimat menjadi huruf besar? Swift menyediakan metode bawaan bernama uppercased() untuk mengubah string menjadi huruf kapital. Coba ketikkan kode berikut:

message.uppercased()

Editor Xcode dilengkapi dengan fitur auto-complete. Fitur ini sangat membantu untuk mempercepat penulisan kode. Begitu kamu mengetik mess, akan muncul jendela auto-complete yang menampilkan beberapa saran berdasarkan apa yang kamu ketik. Kamu cukup memilih message lalu menekan Enter.

Swift menggunakan dot syntax untuk mengakses method dan properti bawaan dari sebuah variabel. Saat kamu mengetik tanda titik (.) setelah message, jendela auto-complete akan muncul lagi dan menampilkan daftar method serta properti yang bisa digunakan. Kamu bisa melanjutkan dengan mengetik uppercased() atau memilihnya langsung dari daftar.

Setelah selesai mengetik, hasilnya akan langsung terlihat. Ketika kita memanggil uppercased() pada message, isi dari message otomatis diubah menjadi huruf besar.

uppercased() hanyalah salah satu dari sekian banyak fungsi bawaan untuk string. Kamu juga bisa mencoba lowercased() untuk mengubah teks menjadi huruf kecil:

message.lowercased()

Atau jika kamu ingin menghitung jumlah karakter dalam sebuah string, kamu bisa menuliskan kode seperti ini:

message.count

Penggabungan string terlihat sangat mudah, bukan? Kamu cukup menambahkan dua string dengan operator +. Namun, aslinya tidak selalu sesederhana itu. Coba tuliskan kode berikut di Playgrounds:

var bookPrice = 39  
var numOfCopies = 5
var totalPrice = bookPrice * numOfCopies
var totalPriceMessage = "The price of the book is $" + totalPrice

Sangat umum untuk membuat string yang menggabungkan teks dan angka. Pada contoh di atas, kita menghitung total harga buku, lalu membuat pesan untuk menampilkan total harga tersebut ke pengguna. Jika kamu mengetikkan kode ini di Playgrounds, kamu akan melihat sebuah error.

Saat Xcode menemukan kesalahan pada kode, error tersebut ditandai dengan tanda seru merah beserta pesan error singkat. Terkadang Xcode juga menampilkan saran perbaikan, tetapi tidak selal ada.

Untuk melihat detail error, kamu bisa membuka area debug/console. Jika console tidak muncul di Playground-mu, klik tombol debug area di pojok kanan atas.

Sebelum penulis menunjukkan solusinya, coba pikirkan dulu: mengapa kode ini tidak berjalan? Luangkan beberapa menit untuk memikirkannya.

Pertama, selalu ingat bahwa Swift adalah bahasa yang type-safe. Artinya, setiap variabel memiliki tipe yang menentukan jenis nilai apa yang boleh disimpannya. Sekarang, penulis bertanya: apa tipe data dari totalPrice? Ingat kembali yang sudah kita pelajari sebelumnya, Swift bisa menentukan tipe data variabel dengan melihat nilainya.

Karena 39 adalah bilangan bulat, Swift menentukan bahwa bookPrice bertipe Int. Hal yang sama berlaku untuk numOfCopies dan totalPrice.

Pesan error di console menyebutkan bahwa operator + tidak bisa menggabungkan variabel bertipe String dengan variabel bertipe Int. Keduanya harus memiliki tipe yang sama. Dengan kata lain, kamu perlu mengonversi totalPrice dari Int menjadi String agar kode tersebut bisa berjalan.

Kamu bisa menuliskannya seperti ini, dengan mengonversi bilangan bulat menjadi string:

var totalPriceMessage = "The price of the book is $" + String(totalPrice)

Ada cara lain yang disebut String Interpolation untuk melakukan hal ini. Kamu bisa menulis kode berikut untuk membuat variabel totalPriceMessage:

var totalPriceMessage =  "The price of the book is $ \(totalPrice)"

String interpolation adalah cara yang direkomendasikan untuk membangun string dari berbagai tipe data. Kamu membungkus variabel yang ingin dikonversi ke string di dalam tanda kurung, dan diawali dengan backslash (\).

Setelah melakukan perubahan tersebut, jalankan ulang kode dengan menekan tombol Play. Error seharusnya sudah teratasi.

Dasar-dasar Control Flow

Setiap hari kita membuat banyak keputusan. Keputusan yang berbeda akan menghasilkan hasil atau tindakan yang berbeda pula. Sebagai contoh, kamu memutuskan apakah besok kamu bisa bangun pukul 6 pagi. Jika bisa, kamu akan memasak sarapan. Jika tidak, kamu akan pergi keluar untuk beli sarapan.

Saat menulis program, kamu menggunakan pernyataan if-then dan if-then-else untuk memeriksa suatu kondisi dan menentukan apa yang harus dilakukan selanjutnya. Jika contoh di atas kita ubah menjadi kode, maka bentuknya akan seperti ini:

var timeYouWakeUp = 6

if timeYouWakeUp == 6 {
print("Cook yourself a big breakfast!")
} else {
print("Go out for breakfast")
}

Kamu mendeklarasikan sebuah variabel bernama timeYouWakeUp untuk menyimpan waktu saat kamu bangun (dalam format 24 jam). Kamu menggunakan pernyataan if untuk mengevaluasi suatu kondisi dan menentukan apa yang harus dilakukan selanjutnya. Kondisi tersebut dituliskan setelah kata kunci if. Pada contoh ini, kita membandingkan nilai timeYouWakeUp untuk melihat apakah nilainya sama dengan 6. Operator == digunakan untuk melakukan perbandingan.

Jika nilai timeYouWakeUp memang sama dengan 6, maka aksi (atau pernyataan) yang berada di dalam tanda kurung kurawal akan dieksekusi. Dalam kode ini, kita hanya menggunakan fungsi print untuk menampilkan sebuah pesan ke console.

Sebaliknya, jika kondisinya tidak terpenuhi, maka pernyataan yang ada di dalam blok else akan dijalankan untuk mencetak pesan yang berbeda.

Di Playgrounds, kamu akan melihat pesan "Cook yourself a big breakfast!" muncul di console karena nilai timeYouWakeUp diisi dengan angka 6. Kamu bisa mencoba menggantinya dengan nilai lain dan melihat hasil yang berbeda.

Logika kondisional sangat umum digunakan dalam pemrograman. Bayangkan kamu sedang mengembangkan sebuah layar login yang mengharuskan pengguna memasukkan username dan password. Pengguna hanya boleh masuk ke dalam aplikasi jika akunnya valid. Dalam kasus seperti ini, kamu bisa menggunakan pernyataan if-else untuk memverifikasi username dan password tersebut.

Pernyataan if-else adalah salah satu cara di Swift untuk mengontrol alur eksekusi program. Selain itu, Swift juga menyediakan pernyataan switch untuk menentukan blok kode mana yang harus dijalankan. Contoh di atas juga bisa kamu tulis ulang menggunakan switch.

var timeYouWakeUp = 6

switch timeYouWakeUp {
case 6:
print("Cook yourself a big breakfast!")
default:
print("Go out for breakfast")
}

Hasilnya akan sama jika nilai timeYouWakeUp diisi dengan angka 6. Sebuah pernyataan switch mengambil sebuah nilai (dalam hal ini, nilai dari timeYouWakeUp) lalu membandingkannya dengan nilai yang didefinisikan di setiap case. Kasus default ditandai dengan kata kunci default. Fungsinya sangat mirip dengan blok else pada pernyataan if-else. Jika nilai yang dievaluasi tidak cocok dengan satu pun case yang ada, maka blok default akan dijalankan. Jadi, jika kamu mengubah nilai timeYouWakeUp menjadi 8, maka pesan "Go out for breakfast." akan ditampilkan.

Tidak ada aturan baku tentang kapan harus menggunakan if-else dan kapan harus menggunakan switch. Terkadang, kita memilih salah satunya hanya karena faktor keterbacaan kode. Misalnya, anggap kamu biasanya mendapatkan bonus di akhir setiap tahun, dan sekarang kamu sedang membuat rencana destinasi liburan berikutnya. Berikut rencananya:

  • Jika kamu mendapatkan bonus sebesar $10.000 (atau lebih), kamu akan pergi ke Paris dan London.
  • Jika bonus berada di antara $5.000 hingga $9.999, kamu akan pergi ke Tokyo.
  • Jika bonus berada di antara $1.000 hingga $4.999, kamu akan pergi ke Bangkok.
  • Jika bonus kurang dari $1.000, kamu hanya akan tetap di rumah.

Jika rencana di atas kamu tulis dalam bentuk kode, hasilnya akan terlihat seperti berikut:

var bonus = 5000

if bonus >= 10000 {
print("I will travel to Paris and London!")
} else if bonus >= 5000 && bonus < 10000 {
print("I will travel to Tokyo")
} else if bonus >= 1000 && bonus < 5000 {
print("I will travel to Bangkok")
} else {
print("Just stay home")
}

Operator >= adalah operator perbandingan yang berarti “lebih besar dari atau sama dengan”. Kondisi if pertama mengecek apakah nilai bonus lebih besar dari atau sama dengan 10000. Untuk mendefinisikan dua kondisi yang harus terpenuhi secara bersamaan, kamu menggunakan operator &&. Kondisi if kedua mengecek apakah nilainya berada di antara 5000 dan 9999. Sisa kode lainnya seharusnya sudah cukup jelas dengan sendirinya.

Potongan kode yang sama juga bisa kamu tulis ulang menggunakan perintah switch seperti di bawah ini:

var bonus = 5000

switch bonus {
case 10000...:
print("I will travel to Paris and London!")
case 5000...9999:
print("I will travel to Tokyo")
case 1000...4999:
print("I will travel to Bangkok")
default:
print("Just stay home")
}

Swift memiliki operator range yang sangat berguna, yaitu ..., untuk mendefinisikan sebuah rentang nilai dari batas bawah hingga batas atas. Misalnya, 5000...9999 mendefinisikan rentang nilai dari 5000 sampai 9999. Untuk kasus pertama, 10000... menunjukkan nilai yang lebih besar dari atau sama dengan 10000.

Kedua potongan kode tersebut bekerja dengan cara yang sama persis, tetapi kamu lebih memilih yang mana? Dalam contoh ini, penulis lebih menyukai pernyataan switch karena membuat kode terlihat lebih jelas dan mudah dibaca. Namun demikian, jika kamu lebih memilih menggunakan if untuk kasus di atas, itu juga sepenuhnya benar. Seiring kamu terus mendalami pemrograman Swift, kamu akan semakin paham kapan sebaiknya menggunakan if dan kapan menggunakan switch.

Memahami Array dan Dictionary

Sekarang setelah kamu memiliki pemahaman dasar tentang variabel dan control flow, penulis ingin memperkenalkan satu konsep pemrograman lain yang akan sangat sering kamu gunakan.

Sejauh ini, variabel-variabel yang kita gunakan hanya dapat menyimpan satu nilai saja. Mengacu pada variabel di potongan kode sebelumnya, seperti bonus, timeYouWakeUp, dan totalPriceMessage, masing-masing hanya bisa menampung satu nilai, apa pun tipe datanya.

Sekarang, mari kita pertimbangkan contoh berikut. Bayangkan kamu sedang membuat sebuah aplikasi bookshelf (rak buku) untuk mengelola koleksi bukumu. Di dalam program tersebut, kemungkinan besar kamu akan memiliki beberapa variabel yang menyimpan judul-judul buku, misalnya:

var book1 = "Tools of Titans"
var book2 = "Rework"
var book3 = "Your Move"

Alih-alih menyimpan satu nilai dalam setiap variabel, apakah ada cara untuk menyimpan lebih dari satu nilai di dalamnya?

Swift menyediakan sebuah tipe data collection yang disebut Array, yang memungkinkan kamu menyimpan banyak nilai dalam satu variabel. Dengan menggunakan array, kamu bisa menyimpan judul-judul buku seperti berikut:

var bookCollection = ["Tool of Titans", "Rework", "Your Move"]

Kamu juga bisa menginisialisasi sebuah array dengan menuliskan daftar nilai yang dipisahkan oleh tanda koma, lalu dikelilingi oleh sepasang tanda kurung siku. Sekali lagi, karena Swift adalah bahasa yang type-safe, semua nilai di dalam array harus memiliki tipe yang sama (misalnya String).

Cara mengakses nilai di dalam array mungkin terlihat agak aneh jika kamu baru mulai belajar pemrograman. Di Swift, kamu menggunakan sintaks subscript untuk mengakses elemen array. Indeks untuk item pertama selalu dimulai dari nol. Oleh karena itu, untuk merujuk ke item pertama dalam sebuah array, kamu menuliskan kode seperti ini:

bookCollection[0]

Jika kamu mengetikkan kode di atas ke dalam Playgrounds lalu menekan Play, kamu akan melihat tulisan "Tool of Titans" muncul di panel hasil.

Saat kamu mendeklarasikan sebuah array menggunakan var, kamu bisa memodifikasi elemen-elemennya. Misalnya, kamu dapat menambahkan item baru ke dalam array dengan memanggil built-in method append seperti berikut:

bookCollection.append("Authority")

Sekarang array tadi memiliki 4 buku. Bagimana caranya kita menghitung jumlah total dari isi suatu array? Kita akan menggunakan properti bawaan count:

bookCollection.count

Coba penulis tanya, bagaimana cara cara mencetak isi dari setiap buku di dalam array ke console?

Jangan lihat jawabannya dulu.

Coba untuk berpikir.

Baik, mungkin kamu akan menulis kode yang terlihat seperti ini:

print(bookCollection[0])
print(bookCollection[1])
print(bookCollection[2])
print(bookCollection[3])

Cara di atas bisa dilakukan, tapi ada cara yang lebih baik. Seperti yang bisa kamu lihat, kode di atas itu repetitif. Bila ada 100 buku, maka kita akan menambahkan 100 baris baru untuk mencetaknya. Di Swift, kita akan menggunakan perulangan for-in untuk mengeksekusi sesuatu (atau sekelompok kode) berkali-kali sesuai dengan nilai yang ditentukan. Contoh, kita bisa menyederhanakan kode tadi dengan:

for index in 0...3 {
print(bookCollection[index])
}

Kamu menentukan rentang angka (0...3) untuk diiterasi (diulang-ulang). Dalam kasus ini, blok kode di dalam perulangan for akan dijalankan sebanyak 4 kali. Nilai index akan berubah setiap kali iterasi berlangsung. Saat for loop pertama kali dieksekusi, nilai index diset ke 0 dan akan mencetak bookCollection[0]. Setelah pernyataan tersebut dijalankan, nilai index diperbarui menjadi 1, lalu mencetak bookCollection[1]. Proses ini terus berlanjut sampai nilai akhir tercapai (yaitu 3).

Sekarang penulis punya pertanyaan untuk kamu. Bagaimana jika ada 10 item di dalam array? Kamu mungkin akan mengubah rentangnya dari 0...3 menjadi 0...9. Lalu bagaimana jika nanti jumlah item bertambah menjadi 100? Maka kamu harus mengubah rentangnya lagi menjadi 0...99.

Apakah ada cara yang lebih umum (generic) untuk melakukan ini, tanpa harus mengubah kode setiap kali jumlah item berubah?

Apakah kamu memperhatikan sebuah pola pada rentang-rentang berikut: 0...3, 0...9, dan 0...99?

Batas atas dari rentang tersebut selalu sama dengan jumlah total item dikurangi 1. Kamu sebenarnya bisa menulis ulang kode tersebut seperti ini:

for index in 0...bookCollection.count - 1 {
print(bookCollection[index])
}

Sekarang berapapun isi dari array tersebut, kodenya akan berjalan dengan benar.

Perulangan for-in Swift ini menawarkan cara lain untuk melakukan iterasi terhadap sebuah array. Contoh sebelumnya bisa ditulis ulang dengan:

for book in bookCollection {
print(book)
}

Ketika array diiterasi, item (dalam hal ini judul buku) dari setiap iterasi akan diisi ke variabel book. Pada iterasi berikutnya, judul buku kedua dari dalam array akan menggantikan judul buku pertama pada variabel book. Proses ini terus terjadi sampai akhir buku di dalam array tercapai.

Sekarang penulis yaking bahwa kamu sudah bisa memahami bagaimana perulangan for-in bekerja dan bagaimana kita bisa mengulang suatu proses memanfaatkan perulangan. Sekarang mari kita bahas satu tipe data collection lain yang umum dipakai dictionary.

Dictionary mirip sekali dengan array dimana kita bisa menyimpan banyak data di dalam satu variabel atau constant. Perbedaan utamanya adalah bahwa setiap nilai di dalam suatu dictionary harus memiliki pasangan berupa sebuah key. Alih-alih mengambil dengan angka index, kita akan mengambil isi dari suatu dictionary dengan pasangan key-nya yang unik.

Mari kita lanjutkan menggunakan koleksi buku sebagai contoh. Setiap buku akan memiliki satu idenditas unik bernama ISBN (International Standard Book Number). Jika ingin mengindekxs sekumpulan buku berdasarkan nilai ISBN-nya, maka kita bisa mendeklarasikan dan mengisi sebuah dictionary dengan cara:

var bookCollectionDict = ["1328683788": "Tool of Titans", "0307463745": "Rework", "1612060919": "Authority"]

Sintaksnya sangat mirip dengan inisialisasi array. Semua nilai diapit oleh kurung siku. Pasangan key dan value dipisahkan oleh titik dua (:). Pada contoh kode tadi, key-nya adalah ISBN. Setiap judul buku berpasangan dengan satu ISBN yang unik.

Jadi bagaimana cara kita mengakses salah satu buku? Sekali lagi, sangat mirip dengan array. Namun, dibandingkan menggunakan angka indeks, kita memanfaatkan key-nya yang unik tadi. Berikut contohnya:

bookCollectionDict["0307463745"]

Perintah tersebut akan memberikan nilai: Tool of Titans. Untuk mengiterasi semua isi dari dictionary, kita juga bisa menggunakan perulangan for-in:

for (key, value) in bookCollectionDict {
print("ISBN: \(key)")
print("Title: \(value)")
}

Seperti yang bisa kamu lihat dari pesan di console, urutan item yang ditampilkan tidak mengikuti urutan saat inisialisasi. Berbeda dengan array, ini adalah salah satu karakteristik dictionary, yaitu menyimpan item secara tidak berurutan (unordered).

Kamu mungkin masih bertanya-tanya, kapan sebenarnya kamu perlu menggunakan dictionary saat membangun sebuah aplikasi. Mari kita lihat contoh lain. Ada alasan kenapa struktur data ini disebut dictionary. Pikirkan bagaimana kamu menggunakan kamus: kamu mencari sebuah kata di kamus, lalu kamus tersebut memberikan arti dari kata itu. Dalam konteks ini, kata tersebut adalah key, dan artinya adalah value terkait.

Sebelum kamu melanjutkan ke bagian berikutnya, mari kita lakukan latihan yang sangat sederhana: membuat sebuah Emoji dictionary alias kamus Emoji yang menyimpan arti dari karakter emoji. Untuk menjaga semuanya tetap sederhana, dictionary ini hanya berisi arti dari emoji-emoji berikut:

  • 👻​​ - Ghost
  • 💩​​ - Poop
  • 😤​​ - Angry
  • 😱 - Scream
  • 👾​​ - Alien monster

Apakah kamu tahu bagaimana cara mengimplementasikan emoji dictionary menggunakan Dictionary? Di bawah ini adalah kerangka kode (code skeleton) untuk emoji dictionary. Silakan lengkapi bagian kode yang masih kosong agar program tersebut bisa berjalan dengan benar:

var emojiDict = // Isi dengan kode untuk inisialisasi dictionary //

var wordToLookup = // Isi dengan emoji Ghost //
var meaning = // Isi dengan kode untuk mengambil nama emoji //

wordToLookup = // Isi dengan emoji Angry //
meaning = // Isi dengan kode untuk mengambil nama emoji //

Untuk menuliskan karakter emoji di Mac, tekan control-command+spasi.

Apakah kamu bisa menyelesaikan tugas tadi?

Mari lihat solusinya pada gambar di bawah:

Penulis yakin kamu bisa menyelesaikan tugasnya sendiri.

Sekarang ayo kita coba mencetak variabel meaning ke console.

Kamu akan menyadari dua hal berikut:

  1. Xcode menandai kedua perintah print bermasalah.
  2. Output di area console terlihat sedikit berbeda dibandingkan output lain yang sudah kita bahas sebelumnya. Hasilnya memang benar, tetapi apa arti Optional?

Catatan: Di Xcode, warning (peringatan) ditandai dengan warna kuning. Salah satu perbedaan utama antara warning dan error adalah program kamu masih bisa dijalankan meskipun terdapat warning. Sesuai namanya, warning berfungsi sebagai peringatan awal tentang potensi masalah. Sebaiknya kamu memperbaiki warning tersebut untuk menghindari masalah di kemudian hari.

Kedua isu ini berkaitan dengan sebuah konsep baru di Swift yang disebut Optional. Meskipun kamu memiliki latar belakang pemrograman sebelumnya, konsep ini mungkin masih terasa baru bagi kamu.

Penulis harap kamu menikmati apa yang sudah kamu pelajari sejauh ini. Namun, jika kamu merasa penat, tidak apa-apa untuk berhenti sejenak. Ambil kopi dan bersantai dulu. Atau kamu juga bisa melewati sisa bab ini dan langsung mencoba membangun aplikasi pertamamu di bab berikutnya. Kamu selalu bisa kembali ke bab ini kapan saja.

Memahami Optional

Pernahkah kamu pernah mengalami hal seperti ini? Kamu membuka sebuah aplikasi, klik beberapa tombol, lalu tiba-tiba aplikasinya crash. Hampir bisa dipastikan kamu pernah mengalaminya.

Tapi, mengapa aplikasi bisa crash? Salah satu penyebab yang paling umum adalah aplikasi mencoba mengakses sebuah variabel yang pada saat runtime ternyata tidak memiliki nilai. Ketika itu terjadi, hal yang tidak diharapkan pun muncul.

Lalu, apakah ada cara untuk mencegah crash seperti ini?

Setiap bahasa pemrograman memiliki strategi masing-masing untuk mendorong programmer menulis kode yang lebih baik dan lebih minim kesalahan. Pengenalan Optional adalah cara Swift membantu programmer menulis kode yang lebih aman, sehingga dapat mencegah aplikasi crash.

Sebagian developer merasa kesulitan memahami konsep Optional. Padahal, ide dasarnya sebenarnya cukup sederhana. Sebelum mengakses sebuah variabel yang mungkin tidak memiliki nilai, Swift memaksa kamu untuk melakukan pengecekan terlebih dahulu. Kamu harus memastikan bahwa variabel tersebut benar-benar memiliki nilai sebelum diproses lebih lanjut. Dengan cara ini, crash pada aplikasi bisa dihindari.

Sampai sejauh ini, semua variabel atau konstanta yang kita gunakan selalu memiliki nilai awal. Ini adalah keharusan dalam Swift. Variabel non-optional menjamin bahwa ia pasti memiliki nilai. Jika kamu mencoba mendeklarasikan sebuah variabel tanpa memberikan nilai awal, Swift akan langsung menampilkan error. Kamu bisa mencobanya sendiri di Playgrounds untuk melihat apa yang terjadi.

Memahami Optionals

Apakah kamu pernah mengalami hal seperti ini? Kamu membuka sebuah aplikasi, mengetuk beberapa tombol, lalu tiba-tiba aplikasinya crash. Hampir bisa dipastikan kamu pernah mengalaminya.

Mengapa aplikasi bisa crash? Salah satu penyebab yang paling umum adalah aplikasi mencoba mengakses sebuah variabel yang pada saat runtime ternyata tidak memiliki nilai. Ketika itu terjadi, hal yang tidak diharapkan pun muncul.

Lalu, apakah ada cara untuk mencegah crash seperti ini?

Setiap bahasa pemrograman memiliki strategi masing-masing untuk mendorong programmer menulis kode yang lebih baik dan lebih minim kesalahan. Pengenalan Optionals adalah cara Swift membantu programmer menulis kode yang lebih aman, sehingga dapat mencegah aplikasi crash.

Sebagian developer merasa kesulitan memahami konsep Optionals. Padahal, ide dasarnya sebenarnya cukup sederhana. Sebelum mengakses sebuah variabel yang mungkin tidak memiliki nilai, Swift mendorong kamu untuk melakukan pengecekan terlebih dahulu. Kamu harus memastikan bahwa variabel tersebut benar-benar memiliki nilai sebelum diproses lebih lanjut. Dengan cara ini, crash pada aplikasi bisa dihindari.

Sampai sejauh ini, semua variabel atau konstanta yang kita gunakan selalu memiliki nilai awal. Ini adalah keharusan dalam Swift. Variabel non-optional menjamin bahwa ia pasti memiliki nilai. Jika kamu mencoba mendeklarasikan sebuah variabel tanpa memberikan nilai awal, Swift akan langsung menampilkan error. Kamu bisa mencobanya sendiri di Playgrounds untuk melihat apa yang terjadi.

Dalam beberapa situasi, kamu memang perlu mendeklarasikan variabel tanpa nilai awal. Bayangkan kamu sedang mengembangkan sebuah aplikasi dengan form pendaftaran. Tidak semua field di dalam form tersebut bersifat wajib, beberapa field (misalnya jabatan pekerjaan) bersifat opsional. Dalam kasus ini, variabel untuk field opsional tersebut bisa saja tidak memiliki nilai.

Secara teknis, Optional hanyalah sebuah tipe data di Swift. Tipe ini menandakan bahwa sebuah variabel boleh memiliki nilai atau tidak memiliki nilai sama sekali. Untuk mendeklarasikan variabel sebagai optional, kamu cukup menambahkan tanda tanya (?) di belakang tipe datanya. Contohnya:

var jobTitle: String?

Di sini, kamu mendeklarasikan sebuah variabel bernama jobTitle yang bertipe String dan bersifat optional. Jika kamu menuliskan kode di atas di Playgrounds, Xcode tidak akan menampilkan error karena Xcode tahu bahwa jobTitle boleh tidak memiliki nilai.

Berbeda dengan variabel non-optional, di mana compiler bisa menebak tipe datanya dari nilai awal, untuk variabel optional kamu harus secara eksplisit menyebutkan tipe datanya (misalnya String, Int, dan sebagainya).

Jika kamu mengikuti instruksi untuk mengetikkan kode tersebut di Playgrounds (lalu menekan Play), kamu akan melihat bahwa nilai nil ditampilkan di panel hasil. Untuk setiap variabel optional yang belum memiliki nilai, Swift secara otomatis memberinya sebuah nilai khusus yang disebut nil.

Artinya, nil menandakan bahwa variabel tersebut tidak punya nilai.

Kamu bisa mengisi nilai ke variabel optional seperti biasa:

jobTitle = "iOS Developer"

Sekarang setelah kita belajar tentang optional, bagaimana ia membantu kita menulis program yang lebih baik?

Perhatikan gambar di bawah ini:

Sesaat setelah selesai menulis kode berikut, Xcode akan memberikan sebuah pesan error.

var message = "Your job title is " + jobTitle

Di sini, jobTitle dideklarasikan sebagai sebuah variabel optional. Xcode akan memberi tahu kamu bahwa ada potensi error pada baris kode yang menggunakan variabel tersebut, karena jobTitle mungkin tidak memiliki nilai. Oleh karena itu, kamu harus melakukan pengecekan terlebih dahulu sebelum menggunakan variabel optional tersebut.

Inilah cara Optional membantu mencegah kamu menulis kode yang berbahaya. Setiap kali kamu ingin mengakses sebuah variabel optional, Xcode akan memaksa kamu untuk melakukan verifikasi terlebih dahulu guna memastikan apakah optional tersebut benar-benar memiliki nilai atau tidak.

Dengan mekanisme ini, Swift membantu developer untuk lebih berhati-hati dan secara signifikan mengurangi kemungkinan terjadinya crash pada aplikasi.

Di sini, jobTitle dideklarasikan sebagai sebuah variabel optional. Xcode akan memberi tahu kamu bahwa ada potensi error pada baris kode yang menggunakan variabel tersebut, karena jobTitle mungkin tidak memiliki nilai. Oleh karena itu, kamu harus melakukan pengecekan terlebih dahulu sebelum menggunakan variabel optional tersebut.

Inilah cara Optionals membantu mencegah kamu menulis kode yang buruk. Setiap kali kamu ingin mengakses sebuah variabel optional, Xcode akan memaksa kamu untuk melakukan verifikasi terlebih dahulu guna memastikan apakah optional tersebut benar-benar memiliki nilai atau tidak.

Dengan mekanisme ini, Swift membantu developer untuk lebih berhati-hati dan secara signifikan mengurangi kemungkinan terjadinya crash pada aplikasi.

Forced Unwrapping

Lalu, bagaimana cara melakukan verifikasi dan unwrap nilai dari sebuah variabel optional? Swift menyediakan beberapa cara untuk melakukannya.

Cara pertama dikenal dengan if statement dan forced unwrapping. Secara sederhana, kamu menggunakan perintah if untuk mengecek apakah variabel optional memiliki nilai dengan cara membandingkannya dengan nil. Jika optional tersebut memang memiliki nilai, maka kamu bisa unwrap nilainya untuk diproses lebih lanjut.

Beginilah kira-kira bentuknya dalam kode:

if jobTitle != nil {
var message = "Your job title is " + jobTitle!
}

Operator != berarti “tidak sama dengan”. Jadi, jika jobTitle tidak sama dengan nil, artinya variabel tersebut pasti memiliki nilai. Dengan begitu, kamu bisa mengeksekusi pernyataan-pernyataan yang ada di dalam blok if.

Saat kamu perlu mengakses nilai dari jobTitle, kamu menambahkan tanda seru (!) di akhir variabel optional tersebut. Tanda seru ini adalah penanda khusus yang memberi tahu Xcode bahwa kamu menjamin variabel optional itu memiliki nilai, sehingga aman untuk digunakan.

Optional Binding

Forced unwrapping adalah salah satu cara untuk mengakses nilai di dalam variabel optional. Cara lainnya disebut optional binding, dan ini adalah cara yang direkomendasikan untuk bekerja dengan optional. Setidaknya, dengan optional binding kamu tidak perlu menggunakan tanda seru (!), sehingga kode menjadi lebih aman.

Jika menggunakan optional binding, potongan kode yang sama dapat ditulis ulang seperti berikut:

if let jobTitleWithValue = jobTitle {
var message = "Your job title is " + jobTitleWithValue
}

Kamu menggunakan if let untuk mengetahui apakah jobTitle memiliki nilai. Jika iya, nilainya akan ditetapkan ke constant sementara bernama jobTitleWithValue. Di dalam blok kode tersebut, kamu bisa menggunakan jobTitleWithValue seperti variabel biasa. Seperti yang kamu lihat, tidak perlu lagi menambahkan akhiran !.

Apakah kamu harus memberi nama baru untuk constant sementara tadi?

Tidak. Kamu sebenarnya bisa menggunakan nama yang sama, seperti ini:

if let jobTitle = jobTitle {
var message = "Your job title is " + jobTitle
}

Catatan: Meskipun namanya sama, sebenarnya ada dua variabel berbeda pada kode di atas. jobTitle yang ditampilkan dengan warna hitam adalah variabel opsional, sedangkan jobTitle yang berwarna biru adalah constant sementara yang berisi nilai hasil unwrap dari variabel opsional tersebut.

Kurang lebih, itulah pembahasan tentang Optionals di Swift. Apakah kamu merasa bingung dengan berbagai simbol ? dan !? Semoga tidak. Jika kamu masih kesulitan memahami konsep optionals, silakan ajukan pertanyaanmu lewat group slack.

Sekarang, apakah kamu masih ingat peringatan (warning) yang ditampilkan sebelumnya? Ketika kamu mencoba mencetak nilai dari meaning, Xcode menampilkan beberapa peringatan. Di area console, meskipun nilainya berhasil dicetak, hasilnya diawali dengan kata “Optional”.

Sekarang, bisakah kamu mengetahui alasannya? Mengapa variabel meaning bertipe optional? Bagaimana cara memodifikasi kode agar pesan peringatan tersebut hilang?

Sekali lagi, jangan langsung melihat solusinya. Coba pikirkan dulu.

Jika kamu perhatikan kodenya, meaning sebenarnya memang sebuah optional. Alasannya adalah karena dictionary tidak selalu memiliki nilai untuk setiap key yang diminta. Sebagai contoh, jika kamu menuliskan kode berikut di Playgrounds:

Variabel meaning akan diberi nilai nil karena emojiDict tidak memiliki nilai untuk key 😍.

Oleh karena itu, setiap kali kamu ingin mengakses nilai dari meaning, kamu harus terlebih dahulu mengecek apakah nilainya ada. Untuk menghindari pesan peringatan (warning) dari Xcode, kamu bisa menggunakan optional binding untuk memastikan keberadaan nilai tersebut sebelum digunakan. Dengan pendekatan ini, kode kamu menjadi lebih aman dan terhindar dari potensi crash akibat mencoba mengakses nilai yang sebenarnya tidak ada.

Setelah perubahan, pesan warning akan hilang. Kamu juga bisa melihat bahwa pesan yang di cetak console tidak lagi di awali dengan Optional.

Bermain dengan UI

Sebelum bab ini ditutup, mari bereksperimen dengan membuat beberapa elemen UI. Yang akan kita laukan adalah menampilkan emoji disertai artinya ke sebuah view.

Seperti yang sudah penulis sebutkan di awal bab, selain mempelajari Swift, kamu juga perlu membiasakan diri dengan berbagai framework yang disediakan oleh iOS SDK. Salah satu framework yang paling penting adalah SwiftUI, yang memungkinkan kamu membuat antarmuka pengguna (UI) yang interaktif.

Kamu juga bisa menggunakan Playgrounds untuk mengeksplorasi beberapa komponen UI yang disediakan oleh framework SwiftUI. Sekarang, ketikkan kode seperti yang ditampilkan pada gambar di bawah ini, lalu tekan Play untuk menjalankan kode tersebut.

Contoh ini seharusnya memberi kamu gambaran awal tentang SwiftUI. Kamu baru saja memanfaatkan framework SwiftUI untuk merender sebuah view dan beberapa label teks di layar.

Sebuah view adalah elemen UI paling dasar di iOS. Kamu bisa menganggapnya sebagai area persegi yang digunakan untuk menampilkan konten. ContentView adalah versi kustom buatan kita dari sebuah View yang umum. Di dalam view tersebut, kita menambahkan dua elemen teks untuk menampilkan ikon emoji dan labelnya. Kita juga mengubah latar belakang view menjadi warna oranye.

Baris kode berikut digunakan untuk menampilkan pratinjau UI di Playgrounds:

PlaygroundPage.current.setLiveView(ContentView())

Inilah kekuatan SwiftUI dan iOS SDK. Keduanya menyediakan banyak sekali elemen bawaan dan memungkinkan developer menyesuaikannya hanya dengan beberapa baris kode.

Penulis yakin kamu mungkin belum sepenuhnya memahami kode SwiftUI di atas. Tidak masalah. Tujuan bagian ini hanyalah memberi kamu pengenalan singkat tentang SwiftUI. Di bab berikutnya, kita akan belajar beberapa komponen SwiftUI yang paling umum.

Penutup

Sekarang kamu sudah mendapatkan gambaran awal tentang Swift. Bagaimana menurutmu? Apa kamu menyukainya? Penulis berharap kamu merasa Swift cukup ramah bagi pemula dan bab ini tidak membuat kamu takut untuk belajar membuat sebuah aplikasi.

Berikutnya, penulis akan mengajarkan kamu cara membangun aplikasi iOS pertamamu menggunakan SwiftUI. Kamu bisa langsung melanjutkan ke bab berikutnya. Namun, jika kamu ingin memperdalam pemahaman tentang bahasa pemrograman Swift, penulis menyarankan kamu untuk membaca panduan resmi dari Apple, yaitu The Swift Programming Language (https://docs.swift.org/swift-book/). Di sana kamu akan mempelajari sintaks bahasa, memahami fungsi, optionals, dan masih banyak lagi.

Tapi itu bukan keharusan.

Jika kamu sudah tidak sabar untuk langsung membuat aplikasi pertamamu, lanjutkan saja ke bab berikutnya dan baca panduan tersebut nanti. Kamu bisa mempelajari Swift lebih dalam sambil jalan.

Sebagai referensi tambahan, kamu juga bisa mengunduh file contoh Playground dari sini