/ / Wartość zmiennoprzecinkowa zwraca podwójne cudzysłowy z [String: AnyObject] w swift - ios, swift, swift3, zmiennoprzecinkowy, anyobject

Wartość zmiennoprzecinkowa powraca z podwójnym cudzysłowem z [String: AnyObject] w swift - ios, swift, swift3, zmiennoprzecinkowa, dowolna

Nie mam pojęcia, dlaczego wartość zmiennoprzecinkowa zawsze zawiera podwójne cudzysłowy, gdy używałem [String: AnyObject]. Czy macie jakieś metody, aby uzyskać prawidłowy wynik?

let appliedLoyalty: Float = 1.05
let appliedWallet: Float = 0.55

let payLoad: [String: AnyObject] = ["custid": custid! as AnyObject, "discounts": ["loyalty": appliedLoyalty,"wallet": appliedWallet] as AnyObject] // custid is string value

print(payLoad)

Kiedy drukuję payLoad, wartość zmiennoprzecinkowa pojawia się w podwójnych cudzysłowach.

["discounts": {
"loyalty" = "1.05";
"wallet" = "0.45";
}, "custid": "puma"]

Odpowiedzi:

3 dla odpowiedzi № 1

Zamień AnyObject na Any jak poniżej:

let appliedLoyalty: Float = 1.05
let appliedWallet: Float = 0.55
let custID = "puma"
let payLoad: [String: Any] = ["custid": custID, "discounts": ["loyalty": appliedLoyalty,"wallet": appliedWallet]] // custid is string value

print(payLoad)

wprowadź opis obrazu tutaj


0 dla odpowiedzi nr 2

Kiedy używasz print(payLoad) następnie słownik description wywoływana jest metoda I wdrożenie description Metoda robi to samo co wydrukowana na konsoli. Zamiast wydrukować słownik, powinieneś użyć JSONSerialization aby zobaczyć faktyczny Json. Użyj poniższego kodu lub punktów przerwania, aby sprawdzić, co jest przechowywane w środku payLoad

let jsonData = try? JSONSerialization.data(withJSONObject: payLoad, options: .prettyPrinted)
let jsonStr = String(data: jsonData!, encoding: .utf8)
print(jsonStr!)