Метод ObjC:
- (void)postRequestToURN:(NSString *)URN
parameters:(NSDictionary *)parameters
Код Swift, вызывающий его:
var paramTest:NSDictionary = NSMutableDictionary()
paramTest.setValue( Int(amount), forKey:"autopayAmt" )
paramTest.setValue( Float(amount), forKey:"autopayAmt1" )
paramTest.setValue( Double(amount), forKey:"autopayAmt2" )
paramTest.setValue( (amount as NSNumber), forKey:"autopayAmt3" )
paramTest.setValue( true, forKey:"autopayAmt4" )
Примечание: это должно быть что-то вроде Swift mapping. На Swift 3 на данный момент. Когда я помещаю код с NSDictionary в качестве параметра, я получаю это сообщение об ошибке компиляции. Это на самом деле не имеет смысла, так как параметр - это NSDictionary * в коде ObjectiveC.
Cannot convert value of type 'NSDictionary' to expected argument type '[AnyHashable : Any]!'
вместо чисел в JSON я получаю строки. Мне нужны цифры.
{
autopayAmt = 125;
autopayAmt1 = "125.43";
autopayAmt2 = "125.4300003051758";
autopayAmt3 = "125.43";
autopayAmt4 = 1;
}
в коде Objective C параметры метода передаются как:
parameters _TtGCs26_SwiftDeferredNSDictionaryVs11AnyHashableP__ * 0x608000038260 0x0000608000038260
Похоже, что он дурак, когда идет от кода Swift к коду ObjC. Вот что я печатаю в коде ObjectiveC:
(lldb) po parameters
{
autopayAmt = 125;
autopayAmt1 = "125.43";
autopayAmt2 = "125.4300003051758";
autopayAmt3 = "125.43";
autopayAmt4 = 1;
}
против, если я нажму в стеке код Swift и напечатаю, то у меня получится:
lldb) po paramTest
▿ 5 elements
▿ 0 : 2 elements
- key : autopayAmt
- value : 125
▿ 1 : 2 elements
- key : autopayAmt2
- value : 125.4300003051758
▿ 2 : 2 elements
- key : autopayAmt1
- value : 125.43
▿ 3 : 2 elements
- key : autopayAmt4
- value : 1
▿ 4 : 2 elements
- key : autopayAmt3
- value : 125.43
Я просто хочу знать, как передавать числа с плавающей точкой, чтобы они отправлялись таким образом на сервер JSON. Данные типа Int выводят в виде чисел ...