Как передать Float в Swift в словаре в метод ObjectiveC как NSDictionary, не превращая его в строку? - PullRequest
0 голосов
/ 31 августа 2018

Метод 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 выводят в виде чисел ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...