Ben opsiyonel Swift vardır ama sadece iki '!'
Xcode kullanmak istemiyorsanız, bir derleyici hatasıSwift çift Unwrapping
Değerini veren bir “Çift 'İsteğe Bağlı Sarılı karşılaştı anlamak İsteğe bağlı tip 'String?' unwrapped değil; '!' demek istedin mi veya ‘? '?
app
, NSRunningApplication
türünde aşağıdaki koda sahibim.
let name: String = app.localizedName!
Neden iki !
kullanmalıyım? var localizedName: String?
türünde olduğu için değişkeni kaldırmak için yeterli değil.
Bağlam: Xcode bana let name: String = app.localizedName!!
kullanmak istiyorum aksi takdirde yukarıda derleyici hata veriyor. app
değişken aşağıdaki gibi tanımlanır:
var apps = NSWorkspace().runningApplications.filter{$0.activationPolicy == NSApplicationActivationPolicy.Regular}
for app in apps{
//code posted above
…
}
Yani app
isteğe bağlı değildir ve her zaman bir değer olacaktır, ne de isteğe bağlı bir uygulama olduğunu biliyoruz.
P.S. Hızlı numaralandırma kullanırken türü tanımlamanın bir yolu var mı? for Foo(app) in apps
gibi, apps = [AnyObject]
.
"App" nasıl tanımlanmış? Bir isteğe bağlı * NSRunningApplication olabilir mi? –
Cevaplar için tökezliyoruz, çünkü bu kod satırı bu hatayı üretmemelidir. Uygulama isteğe bağlıysa farklı bir hata alırsınız. Ve 'localizedName' bir" çift isteğe bağlı "(lol) değildir. Bu kod satırı iyi görünüyor ve bu hatayı oluşturmamalı. Swift, maalesef yanıltıcı hatalar üretebilir ve asıl sorunun daha önceki bir kod satırında (veya belki de soru hazırlarken kod satırını değiştirdiğinizde veya değiştirdiğinizde) olup olmadığını merak ediyorum. Ayrıca, açıklanamayan hatalar aldığımda, projeyi temizlerim, Xcode'tan çıkarım, türetilmiş veri klasörünü boşalt ve Xcode'u yeniden başlatırım. – Rob
@MartinR Daha fazla bilgi eklendi. Yardım için şerefe. – user14492