2013-11-27 5 views
0
#import "LocationParser.h" 

@implementation LocationParser 

-(LocationParser *)initXMLParser 
{ 
self=[super init]; 
if (self) 
{ 
    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication]delegate]; 
    self.parsingArray = [NSMutableArray arrayWithArray:appDelegate.presenceArray]; 
    //parser = [[NSXMLParser alloc]init]; // this was the wrong place to declare. 
    [self parseArrayofPresence]; 
} 
    return self; 
} 
-(void)parseArrayofPresence 
{ 
for (NSData *data in _parsingArray) 
{  NSLog(@"presence data for parsing is :- %@",data);//this shows the data in NSData form. 
     parser = [[NSXMLParser alloc]initWithData:data]; // this solves the problem 
} 
    [parser setDelegate:self]; 
    [parser parse]; // this gets highlighted showing EXC_BAD_ACCESS. 

} 

Это класс AppDelegate, где я получаю данные.EXC_BAD_ACCESS (код = 2) во время разбора XML

- (void)xmppStream:(XMPPStream *)sender didReceivePresence:(XMPPPresence *)presence 
    { 
     if ([presence status]!= nil) { 
     _presenceData = [[presence status] dataUsingEncoding:NSUTF8StringEncoding];//convert presence to NSData 
     [_presenceArray addObject:_presenceData]; // add NSData to a mutable array 
    locationParser = [[LocationParser alloc]initXMLParser]; //initialising location parser class 
    } 
+0

Вы использовали делегат NSXMLDelegate в своем классе .h? – Dinesh

+0

есть .. я сделал это. – icodes

+0

почему вы разбираете его внутри цикла for? – manujmv

ответ

0

Попробуйте двигаться ваш
[parser setDelegate:self]; [parser parse];

из за петли .. Кстати, почему вы делаете, что в течение цикла?

+0

done ... но показывает ту же ошибку – icodes

+0

Вы не добавили данных в класс парсера XML? какие данные его собираются разбирать? использовать '[[NSXMLparser alloc] initwithData: data]' – Dinesh

+0

как я могу это сделать с помощью массива NSData – icodes

Смежные вопросы