2013-05-06 52 views
2

一个的NSString我有一个方法,从一个SOAP方法得到的结果:创建不同类

SDZPaymentResult* result = (SDZPaymentResult*)value; 

如果我使用:NSLog(@"%@", result);

它显示:

<CXMLElement 0x20d9c950 [0x20dccc40] ns1:paymentResult 
<ns1:paymentResult> 
<additionalData xmlns="http://payment.services.adyen.com" xsi:nil="true"/> 
<authCode xmlns="http://payment.services.adyen.com">76419</authCode> 
<dccAmount xmlns="http://payment.services.adyen.com" xsi:nil="true"/> 
<dccSignature xmlns="http://payment.services.adyen.com" xsi:nil="true"/> 
<fraudResult xmlns="http://payment.services.adyen.com" xsi:nil="true"/> 
<issuerUrl xmlns="http://payment.services.adyen.com" xsi:nil="true"/> 
<md xmlns="http://payment.services.adyen.com" xsi:nil="true"/> 
<paRequest xmlns="http://payment.services.adyen.com" xsi:nil="true"/> 
<pspReference xmlns="http://payment.services.adyen.com">8813677969778790</pspReference> 
<refusalReason xmlns="http://payment.services.adyen.com" xsi:nil="true"/> 
<resultCode xmlns="http://payment.services.adyen.com">Authorised</resultCode> 
</ns1:paymentResult>> 

有一种将结果更改为NSString的方法?

+0

你想要哪个数据作为字符串?它只是链接?或者是什么 ?请解释.. – 2013-05-06 02:19:26

+0

您使用的是TBXML,你还在吗? – 2013-05-06 02:26:30

+0

显示的所有结果内容。 – Marckaraujo 2013-05-06 02:26:35

回答

4

%@格式说明调用对象,这将返回NSString你正在寻找的description方法。但是你可能想重新考虑你的解决方案,那不是description的做法,如果它不是你的类中的一个,返回的值可能会改变并破坏你的代码!检查是否没有其他方法以更可靠的方式获取数据。

+0

我已经使用了[NSString stringWithFormat:@“%@”,result];并且它现在可以工作了,我试图以更可靠的方式获得它,但是SDZPaymentResult方法已经破产并且它是一个非常复杂的代码,我将尝试从这个结果重新创建一个方法来以各种方式工作。 – Marckaraujo 2013-05-06 02:12:39

+1

@Marckaraujo不要使用'stringWithFormat:',直接在对象上调用'description'方法。 – JustSid 2013-05-06 02:28:12

-1

使用一个NSString格式:

NSString *newString = [NSString stringWithFormat:@"%@", result]; 
+0

不知道为什么这会被拒绝投票......这是海报想要的确切答案:“有办法将结果更改为NSString?”。 – 2013-05-06 02:10:46

+1

我因为'stringWithFormat:'不需要而降低了你的评价。它确实回答了这个问题,但在对象上调用“description”效率要高得多(虽然这也不是一个好习惯) – JustSid 2013-05-06 02:59:13

0

正如@JustSid说,你可以用另一种方式:

NSLog(@"%@", result.description);

你的路,这种方式是相同的,所以如果你想改变“结果”,你必须改变返回值的描述方法,如果你想改变它,你必须是“结果”类的所有者。

我认为你必须继承“结果”类,你可以做任何你想要的!