2010-04-29 61 views
0

我正在开发一个应用程序,我在做XML解析。我在[xmlparse parse]方法中发现错误。关于iPhone中的XML解析

错误:

[NSCFString bytes]: unrecognized selector sent to instance 0x3df6310 

2010-04-30 00:09:46.302 SPCiphone2[4234:1003] void SendDelegateMessage 
    (NSInvocation*): delegate (<CFNotificationCenter 0x3d09670 [0x87dca0]>) 
    failed to return after waiting 10 seconds. main run loop mode: 
    kCFRunLoopDefaultMode 

代码片段:

responseOfWebResultData = [[NSMutableString alloc] 
          initWithData:responseData 
           encoding:NSUTF8StringEncoding]; 

NSLog(@"result: %@", responseOfWebResultData); 

// starting the XML parsing 
if (responseOfWebResultData) { 
    @try { 
     xmlParser = [[NSXMLParser alloc] initWithData:responseOfWebResultData]; 
     [xmlParser setDelegate:self]; 
     [xmlParser setShouldResolveExternalEntities:YES]; 
     [xmlParser parse]; 
     [responseOfWebResultData release]; 
    } 
    @catch (NSException *e) { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Please" 
                 message:[e reason] 
                 delegate:nil 
               cancelButtonTitle:@"OK" 
               otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 
    } 
} 
+0

我们可否看到数据? – dwery 2010-04-29 18:50:17

回答

2

你不应该传递一个的NSString *为initWithData :.你应该这样做:

xmlParser = [[NSXMLParser alloc] initWithData:responseData]; 

错误说,你要发送的消息bytes到NSCFString的实例,这是一个的NSString *,即使你宣布它作为一个的NSMutableString *,因为这是一个动态类型化语言,但如果您尝试将其转换为其他类型,则类类型不会自动转换。

+0

@ lucius,你是说XMLParser应该只需要字节码数据? – Tirth 2010-04-30 06:21:21

+0

我这么认为。当方法名称是“initWithData:”时,你应该传递一个NSData实例而不是NSString。 – lucius 2010-04-30 06:33:40

+0

好吧。如果我们评论 responseOfWebResultData = [[NSMutableString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; NSLog(@“result:%@”,responseOfWebResultData);两条线都没有被其他代码使用。 – Tirth 2010-04-30 07:33:33