0
내가하고있는 일 : XML을 구문 분석하여 NSManagedObject 하위 클래스를 만들고 항상 파싱에 실패했습니다. 여기Objective-C NSManagedObjects에 대한 XML 구문 분석
코드 : answerString
이 std::string
입니다
NSData* data = [[NSString stringWithUTF8String:answerString.c_str()] dataUsingEncoding:NSUTF8StringEncoding];
NSXMLParser *nsXmlParser = [[NSXMLParser alloc] initWithData:data];
XMLParser *parser = [[XMLParser alloc] initXMLParser];
[nsXmlParser setDelegate:parser];
BOOL success = [nsXmlParser parse];
. 그리고 나는 항상 NO
을 success
플래그로 받고 있습니다.
@interface System : NSManagedObject
@property (nonatomic, retain) NSString * systemFullName;
@property (nonatomic, retain) NSString * systemShortName;
@end
내 파서 헤더 :
@class System;
@interface XMLParser : NSObject <NSXMLParserDelegate>
{
NSMutableString *currentElementValue;
System *system;
}
- (XMLParser *) initXMLParser;
및 구현 :
- (XMLParser *) initXMLParser
{
self = [super init];
return self;
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"System"])
{
system = [NSEntityDescription insertNewObjectForEntityForName:@"System"
inManagedObjectContext:((AppDelegate*)[[UIApplication sharedApplication]
delegate]).managedObjectContext];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if (!currentElementValue)
{
currentElementValue = [[NSMutableString alloc] initWithString:string];
} else
{
[currentElementValue appendString:string];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
NSManagedObjectContext *context = ((AppDelegate*)[[UIApplication sharedApplication]
delegate]).managedObjectContext;
if ([elementName isEqualToString:@"System"])
{
[context save:nil];
system = nil;
}
if ([elementName isEqualToString:@"systemFullName"])
{
system.systemFullName = currentElementValue;
}
if ([elementName isEqualToString:@"systemShortName"])
{
system.systemShortName = currentElementValue;
}
}
어떤 아이디어가? 방법은 첫 번째 개체의 끝을 찾을 수 didEndElement
무엇
내가 발견은 XmlParser가 단지 오류 (111) 나는이 문제를 해결
구문 분석하는 동안 어떤 오류가 발생합니까? – Leena