Данные поступают плавно.UITableView XML Parser
Но проблемы имеют турецкие символы.
должен прийти, как "Düzce", но "ÜZCE" приходит .. И
"Акчакоджа" клетка зрения "çakoca" приходит ..
XML URL: http://bykrkc.com/test.xml
XMLParser.m ;
#import <Foundation/Foundation.h>
#import "XMLParser.h"
#import "XMLFlightList.h"
@implementation XMLParser
@synthesize ucakList = _ucakList;
NSMutableString *currentNodeContent;
NSXMLParser *parser;
XMLFlightList *currentFlight;
bool isStatus;
-(id) loadXMLByUrl:(NSString *)urlString{
_ucakList = [[NSMutableArray alloc] init];
NSError *error;
NSURL *url =[NSURL URLWithString:urlString];
NSString * dataString = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
parser =[[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[parser parse];
return self;
//[NSString stringWithFormat:@"%@",data];
}
-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
currentNodeContent = (NSMutableString *)[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
-(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
if([elementName isEqualToString:@"sehirler"])
{
currentFlight = [XMLFlightList alloc];
isStatus = YES;
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if(isStatus){
if([elementName isEqualToString:@"ad"]){
currentFlight.name = currentNodeContent;
}
}
if([elementName isEqualToString:@"sehirler"]){
[self.ucakList addObject:currentFlight];
currentFlight =nil;
currentNodeContent = nil;
}
}
@end
XMLParser.h;
#import <Foundation/Foundation.h>
@interface XMLParser : NSObject<NSXMLParserDelegate>
@property (strong,readonly) NSMutableArray *ucakList;
-(id) loadXMLByUrl:(NSString *)urlString;
@end
Результатж;
2013-12-18 15:49:21.505 tableview01[7663:70b] ÇORUM
2013-12-18 15:49:21.507 tableview01[7663:70b] İSTANBUL
2013-12-18 15:49:21.507 tableview01[7663:70b] ÖMERLİ
2013-12-18 15:49:21.508 tableview01[7663:70b] ÜZCE -> Problem True: DÜZCE
2013-12-18 15:49:21.508 tableview01[7663:70b] çakoca -> Problem True: Akçakoca
2013-12-18 15:49:26.156 tableview01[7663:70b] ÇORUM
Результат Изображение: http://oi42.tinypic.com/2z9mgza.jpg
Не работает :('[currentNodeContent appendString: [строка stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]]; NSLog (@"% @ ", currentNodeContent);' но '2013-12-18 16: 28: 40.790 tableview01 [8320: 70b] (null)' – bykrkc
@alikarakoc yes, вторая проблема в парсере '- (void): (NSXMLParser *) parser didEndElement : (NSString *) elementName namespaceURI: (NSString *) namespac eURI qualifiedName: (NSString *) qName' метод, в строке 'currentNodeContent = nil;'. Попробуйте использовать обновленный код. –
@alikarakoc и может быть третьей проблемой в парсере '- (void): (NSXMLParser *) parser didStartElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualifiedName: (NSString *) qName attributes: (NSDictionary *) attributeDict' , Вы должны использовать 'currentFlight = [[XMLFlightList alloc] init];' или 'currentFlight = [XMLFlightList new];' вместо 'currentFlight = [XMLFlightList alloc];' –