gpt4 book ai didi

ios - RubyMotion >> 如何将变量转换为特定类型?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:59 27 4
gpt4 key购买 nike

由于 RubyMotion 似乎在编译时进行了大量类型转换,因此我无法将正确的数据类型传递到 NSMutableURLRequest POST 请求中。它期待 NSData,但我无法弄清楚如何在不引发错误的情况下将 NSString 变量键入 NSData。如果不进行类型转换,我们的 SOAP 服务器将无法正确接收数据,我会收到可怕的(而且模糊的)“根级别的数据无效。第 1 行,位置 1”错误。

这是有问题的行:

postXML = "<xml><whatever>hey</whatever></xml>"
postData = ( postXML as NSData ).dataUsingEncoding( NSUTF8StringEncoding, allowLossyConversion: true );

request = NSMutableURLRequest.alloc.init
request.setURL( NSURL.URLWithString( "https://services.sbx1.cdops.net/v4.3/SubscriberServicePox.svc/Login" ) )
request.setHTTPMethod( "POST" )

request.setValue( "application/xml", forHTTPHeaderField: "Content-Type" )
request.setHTTPBody( postData, dataUsingEncoding:NSUTF8StringEncoding )

theConnection = NSURLConnection.alloc.initWithRequest( request, delegate:self )

如有任何帮助,我们将不胜感激。

最佳答案

你对正在发生的事情的理解有一些漏洞,所以让我们分解一下。

postXML = "<xml><whatever>hey</whatever></xml>"
postData = ( postXML as NSData ).dataUsingEncoding( NSUTF8StringEncoding, allowLossyConversion: true );

我不确定您从哪里得到 ( postXML as NSData ) 但它无效且没有意义。 dataUsingEncoding:allowLossyConversion: 是在 NSString 上声明的 Objective-C 方法不是 NSData。正确的调用方式应该是这样

postData = postXML.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)

Ruby motion 不会为您做类型转换,Ruby 不会,Objective-C 也不会。如果您向某个类的实例发送消息,而该类的实例不响应您发送的消息,您将崩溃/引发异常。

当你打电话时

postXML.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)

您没有进行类型转换,而是将消息 dataUsingEncoding:allowLossyConversion: 发送到 NSString 的实例。这将导致返回一个全新的对象(NSData 的一个实例)。

关于ios - RubyMotion >> 如何将变量转换为特定类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10726681/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com