2011-03-26 100 views
0

在M wsdl2objc生成的代碼,我有:wsdl2objc NSString的錯誤

@interface tns6_EntityType : NSString { 

/* elements */ 
/* attributes */ 
    NSNumber * id_; 
} 

然而,當我得到這個類型的元素,我得到以下錯誤:

2011-03-26 21:23:02.428 Pez[47129:a0f] Exception detected while handling key input.

2011-03-26 21:23:02.428 Pez[47129:a0f] * -length only defined for abstract class. Define -[tns6_EntityType length]!

有誰知道如何解決這個問題?

感謝

回答

0

它看起來你需要在類tns6_EntityType添加自己實施-length ILKE。請記住,在Objective-C中,NSString是class cluster的抽象父項,因此直接進行子類化有時會產生奇怪的效果。如果您繼續得到這樣的錯誤,請仔細閱讀該消息並遵循其指示。

+0

我已經試過了。我得到了同樣的錯誤 – 2011-03-26 19:49:09

+0

你可以發佈你的實現(在你的原始問題中)'[tns6_EntityType length]'嗎? – Tim 2011-03-27 02:02:26

+0

對不起,遲到的迴應。我修改了wsdl以擁有一個NSString和一個NSNumber。我的實現是返回[超長],但它不起作用。 – 2011-03-30 14:07:16

0

當生成wsdl代碼到objC時,我遇到了同樣的問題。

你可以在這裏找到我的解決方案:https://stackoverflow.com/a/21331422/1891772

在我的例子中,我使用了ARC。據我所知,所以你需要改變我的例子wsdl2objc不支持ARC:

  1. 變化「的StringHolder」屬性「強」到「保留」
  2. 添加「自動釋放」到代碼行財產「的StringHolder 「初始化
  3. 在dealloc方法中加上」self.stringHolder = nil「