2016-08-30 9 views
5

benim çıkış gibi geliyor "İsteğe Bağlı (\" A \ ") ama sadece dize istiyorum' A. Ben bu karakteri kullanarak benim dizi filtre uygulamak zorundayız.String (char) kullanarak String oluşturuyorum ancak bununla birlikte isteğe bağlı değer elde ediyorum, nasıl kaldıracağım? '

let char = selectedSection.characters.last 
let str = String(char) 
let array = result?.objectForKey("GetClassPeriodList") as! NSArray 
let filtered = array.filter { 
    return ($0["Section_Code"] as! String) == str 
} 
print(filtered) 
+0

Denenen kodunuzu göster –

+0

Search Swift isteğe bağlı paketleri nasıl alır. – Nitesh

+0

ekleyerek deneyin! veya? sonunda dize nesnesinin – raki

cevap

4

@ martin-r gibi diyor ki, last size bir koleksiyon verir, çünkü bir koleksiyonun son karakterini sorduğunuzda, aslında bir karakterle sonuçlanırsınız, örneğin koleksiyon boş ise ne olurdu?

Ne yapabilirsin? if let kullanarak açıp, yazabilirsiniz:

if let char = selectedSection.characters.last { 
    let str = String(char) 
    let array = result?.objectForKey("GetClassPeriodList") as! NSArray 
    let filtered = array.filter { 
     return ($0["Section_Code"] as! String) == str 
    } 
    print(filtered) 
} 

Ve sonra char ürününüzün üzerinde çalışmaya devam edebileceğiniz bir değer içerdiğini biliyorsunuzdur.

Sen size yardımcı olur seçeneklere here

Umut hakkında daha fazla bilgi bulabilirsiniz.

+0

Çok teşekkürler ama neden kullanmıyoruz! – sukhmeet

+1

Zorla açmayı kullanarak kullanabilirsiniz! ancak, isteğe bağlı olduğunuzu seçtiğinizde bir değer içerdiğinden emin değilseniz tavsiye edilmez. Değer içermediği takdirde, bir çalışma zamanı hatasıyla karşılaşırsınız. Aynı tür döküm için de geçerlidir. eğer kullanmamaya devam ederseniz? typecasting için. – iamyogish

+0

@sukhmeet yapabilirsiniz, ancak '' 'kullanarak tehlikeli olabilir. "SelectedSection" öğeniz boşsa ve son öğeyi soruyorsanız ne olur? Karşılığında ne alacaksın? Bunu bir oyun alanında deneyin: "var badString: String =" " let last = badString.characters.last!", Eğer bunu yaparsam EXC_BAD_INSTRUCTION (kod = EXC_I386_INVOP, subcode = 0x0) ile ödüllendirilirim. derleyiciler size nil ile karşılaştığını ve tüm umutlarını yitirdiklerini ve vazgeçtiklerini anlatıyor. Bu yüzden isteğe bağlılarınızı 'let' veya' guard' ifadeleri kullanarak açmak neredeyse her zaman daha iyidir. – pbodsk

İlgili konular