üzerinde başarılı bir şekilde değerlendirirseniz, Field adlı bir özel nesnem var. Temel olarak bir formdaki tek bir alanı tanımlamak için kullanırım. İsteğe bağlı (nil)
class Field {
var name: String
var value: Any?
// initializers here...
}
kullanıcı formu gönderdiğinde
, ben bunların geçerli değerleri içeren emin olmak içinField
nesnelerin her biri doğrulamak. Bazı alanlar böylece gerekli değildir Bazen kasten böyle
value
özelliğine
nil
ayarlayın:
field.value = nil
ı kullandığınızda bu bir sorun teşkil görünüyor bir alan sıfır olup olmadığını belirlemek için izin verirsen-.
if let value = field.value {
// The field has a value, ignore it...
} else {
// Add field.name to the missing fields array. Later, show the
// missing fields in a dialog.
}
ben kesme noktası ayarlamak field.value
kasten nil ayarlı edildiğinde, öyle değil else if-let bloğun geçer else-if ve yukarıda. Ancak, field.value
Başlatılmamış ve atanmamış bırakılan alanlar için, program diğer bloğa gider.
ben izin verirsem-bloğunun içinde field.value
ve value
çıktısını çalıştı:
if let value = field.value {
NSLog("field.value: \(field.value), value: \(value)")
}
Ve bu elde ediyoruz:
field.value: İsteğe bağlı (nil), değeri: nil
Bu yüzden, isteğe bağlı olarak, başlatılmamış olmanın ve diğerinin de sıfır. Ancak eğer if-let'in içinde bir tane bile ekleyecekseniz, derleyiciyi mutlu etmeyiz:
if let value = field.value {
if value == nil { // Cannot invoke '==' with an argument list of type '(Any, NilLiteralConvertible)'
}
}
Bunu nasıl aşarım? Sadece field.value
'un nil
olup olmadığını kontrol etmek istiyorum.
Yeniden üretilemiyor. Hangi Xcode sürümünü kullanıyorsunuz? –
Xcode 6 GM. Yeniden başlatmayı denedi, hala şans yok. :( –
Sorunu gösteren eksiksiz bir kendi kendine örnek gönderebilir misin? –