Sejak beta 8.3, zillions memperingatkan "Interpolasi string menghasilkan deskripsi debug untuk nilai opsional; apakah Anda bermaksud untuk membuatnya eksplisit?" muncul di kode saya.
Misalnya, peringatan muncul dalam situasi berikut, di mana opsi dapat mengarah ke nol:
let msg = "*** Error \(options["taskDescription"]): cannot load \(sUrl) \(error)"
Seperti yang dirancang sebelumnya, tidak masalah bagi saya (dan kompiler) opsional untuk diinterpolasi sebagai 'nil'. Tetapi compiler berubah pikiran.
Apa yang disarankan oleh compiler adalah menambahkan konstruktor String dengan deskripsi sebagai berikut:
let msg = "*** Error \(String(describing: options["taskDescription"])): cannot load \(sUrl) \(error)"
Jelas, hasilnya eksplisit tetapi juga menurut saya sangat tidak praktis. Apakah ada pilihan yang lebih baik? Apakah saya harus memperbaiki semua peringatan itu atau lebih baik menunggu beta berikutnya?