0
이 질문은 중복 된 질문 일 수 있습니다. 하지만 내 문제에 대한 적절한 대답을 찾을 수 없었습니다.iOS - 구문 분석 후 xml 데이터 저장
다음 xml 파일을 서버에서 다운로드하고 있습니다.
<INCIDENTTYPES>
<INCIDENT FORMNAME="first" TEXT="First incident">
<TYPE>Type1</TYPE>
<TYPE>Type2</TYPE>
<TYPE>Type3 Tag</TYPE>
<TYPE>Type4 Tag</TYPE>
<LOCATION>Council</LOCATION>
<LOCATION>Domestic</LOCATION>
<LOCATION>Commercial</LOCATION>
</INCIDENT>
<INCIDENT FORMNAME="second" TEXT="Second incident">
<TYPE>Second type</TYPE>
<TYPE>Second/first type</TYPE>
<TYPE>Second3</TYPE>
<LOCATION>Council</LOCATION>
<LOCATION>Domestic</LOCATION>
<LOCATION>Commercial</LOCATION>
</INCIDENT>
</INCIDENTTYPES>
저는 XML 파일을 구문 분석하는 데 RaptureXML을 사용하고 있으며 다음과 같이 구문 분석을 수행 할 수 있습니다.
RXMLElement *rootXML = [RXMLElement elementFromXMLData:self.connectionData];
[rootXML iterate:@"INCIDENT" usingBlock: ^(RXMLElement *incidents) {
if([[incidents attribute:@"FORMNAME"] isEqualToString:@"first"]){
NSArray *listArray = [NSArray array];
listArray = [incidents children:@"TYPE"];
IncidentData *iData = [[IncidentData alloc] init];
[iData.type setValue:listArray forKey:@"type"];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:iData];
[self.userDefault setObject:data forKey:@"firstObject"];
}
}
IncidentData 클래스는 다음과 같습니다.
#import "IncidentData.h"
@implementation IncidentData
- (id)initWithCoder:(NSCoder *)aDecoder{
if (self = [super init]) {
//self.type is an array
self.type = [aDecoder decodeObjectForKey:@"type"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:self.type forKey:@"type"];
}
@end
다음과 같이 데이터를로드하려고합니다.
NSData *dd = [self.userDefault objectForKey:@"firstObject"];
IncidentData *items = (IncidentData *)[NSKeyedUnarchiver unarchiveObjectWithData:dd];
NSArray *typeArray = [items.type objectAtIndex:0];
NSLog(@"Incident type : %@", typeArray);
그러나 typeArray는 null입니다.
요약 : 원격 xml 파일을 구문 분석하고 값을 디스크에 저장하고 해당 응용 프로그램의 후기 단계를 사용하려고합니다.
도와 주시겠습니까?