je créer le modèle de classe d'essai qui a 4 DataMember il ne devrait pas être nul lors de l'accès (signifie la valeur par défaut de retour)Valeur facultative dans rapide 3 voies optimisé
extension Double {
/// Rounds the double to decimal places value
func roundTo(places:Int = 2) -> Double
{
let divisor = pow(10.00, Double(places))
return (self * divisor).rounded()/divisor
}
}
class TestingModel{
var id : String!
var name : String! = "abc" /*It is not working*/
var price : Double! = 0.00
var uniqueId : Int! = 1
/**
* Instantiate the instance using the passed dictionary values to set the properties values
*/
init(dictionary: [String:Any])
{
id = (dictionary["id"] as? String) ?? "" //I dont want to do like this way
name = dictionary["name"] as? String
price = (dictionary["price"] as? Double)?.roundTo() ?? 0.00
uniqueId = dictionary["unique_id"] as? Int
}
}
let t:TestingModel = TestingModel.init(dictionary: ["x id" : "x012y12345z45","x name":"test1","x price":100.0,"uniqueId":1236.0])
let testString = "Jd " + t.id
print(testString) //Perfect
print(t.name)
print(t.price) /* Only one decemal point is printed */
Obtenir de sortie
Jd
nil
0.0
sortie prévue
Jd
abc/doit retourner abc au lieu de zéro/
0.00/Deux virgule complulsury/
Ce que je veux dire en fait dans
si j'attribuer une valeur nulle à la variable puis il devrait rester avec sa valeur par défaut sans écrire ceci Chaînage optionnel ?? "abc" dans le constructeur
Si votre dictionnaire peut renvoyer zéro, alors vous devez le changer manuellement pour définir les valeurs par défaut comme indiqué dans votre question elle-même. Il n'y a pas moyen de sortir. – adev
ok je pense que je dois supprimer cette question, car il n'y a aucun moyen d'optimiser la question ci-dessus –
alors les gars s'il vous plaît supprimer vos réponses ainsi –