Beginnend mit swift3 habe ich Probleme, zuverlässig zu erkennen nil/NSNull. In diesem Ausschnitt hier, anstelle von nil
, bekomme ich einen Optional(_SwiftValue)
Wert, den ich nicht erkennen kann.Wie nach nil/NSNull/optional zu prüfen, wenn Optional (_SwiftValue) beteiligt ist
Ich habe checking classForCoder ohne Glück versucht.
In anderen Ländern gibt es talk about id-as-Any causing this kind of problem
func testVotingMachine() {
let vote: String? = nil // Can be a string or nil
//let vote: String? = "president" // Can be a string or nil
var dict = [String: AnyObject?]()
dict["vote"] = vote as AnyObject?
let obj: AnyObject? = dict as AnyObject?
guard let dict2 = obj as? Dictionary<String, AnyObject?> else {
fatalError()
}
let value = dict2["vote"] as AnyObject?
let didVote = notNil(objectOrNil: value)
XCTAssertFalse(didVote) // BOOM! notNil() fails to detect nil
}
func notNil(objectOrNil: AnyObject?) -> Bool {
guard let object: AnyObject = objectOrNil else {
return false
}
if object is NSNull {
return false
}
//if object.classForCoder == NSNull.classForCoder() {
// return false
//}
// TODO: how to check for? Optional(_SwiftValue)
print("class for coder: \(object.classForCoder)")
return true
}
ich brauche, um meine Daten zu sanieren, bevor es zu JSONSerialization.data()
vorbei. So muss ich erkennen Optional(_SwiftValue)
wie man sieht das erwartete Ergebnis, wenn man auf 'dict' eine kleine Änderung vornehmen:' var dict = [Zeichenfolge: ANYOBJECT] '. – rmaddy
Dies ist der kleinste Ausschnitt, den ich machen kann, der einen 'Optional (_SwiftValue)' in ein Wörterbuch einfügt. Es ist hässlich. Ist es ein interner Typ, der den Entwicklern nicht zugänglich sein soll? Oder ist es etwas, mit dem sich schnelle Entwickler beschäftigen müssen? Irgendwelche Ideen, wie man den 'Optional (_SwiftValue)' erkennt. – neoneye