NSXMLParser 인스턴스를 사용합니다. NSMutableDictionary에 저장된 NSMutableStrings에 발견 된 문자를 저장하고 이러한 Dicts는 NSMutableArray에 추가됩니다.NULL 값 전달
이 모든 것이 정상적으로 보일 때 : 1 배열, x 사전 및 x 문자열을 계산합니다.
detailview 컨트롤러 파일에서 구문 분석 결과를 표시하고 싶습니다. 모든 것을 저장하는 클래스를 호출하지만 null이 반환됩니다.
이
이다 나는 (잘못) 무엇을 : 내 컨트롤러 파일에서xAppDelegate.h
@interface xAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
UINavigationController *navigationController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@end
xAppDelegate.m
#import "xAppDelegate.h"
#import "RootViewController.h"
#import "XMLParser.h"
@implementation xAppDelegate
@synthesize window, navigationController;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// OFFLINE DOCUMENT > Resources folder
NSString *Path = [[NSBundle mainBundle] bundlePath];
NSString *DataPath = [Path stringByAppendingPathComponent:@"file.xml"];
NSData *Data = [[NSData alloc] initWithContentsOfFile:DataPath];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:Data];
XMLParser *parser = [[XMLParser alloc] initXMLParser];
[xmlParser setDelegate:parser];
[xmlParser setShouldProcessNamespaces:NO];
[xmlParser setShouldReportNamespacePrefixes:NO];
[xmlParser setShouldResolveExternalEntities:NO];
[xmlParser parse];
[window addSubview: navigationController.view];
[window makeKeyAndVisible];
}
- (void)dealloc {
[window release];
[navigationController release];
[super dealloc];
}
@end
XMLParser.h
@class xAppDelegate;
@interface XMLParser : NSObject {
NSMutableArray *array;
NSMUtableDictionary *dictionary;
NSSMutabletring *element;
xAppDelegate *appDelegate;
}
- (XMLParser *) initXMLParser;
@property (nonatomic, retain) NSMutableArray *array;
@property (nonatomic, retain) NSMutableDictionary *dictionary;
@property (nonatomic, retain) NSMutableString *element;
XMLParser.m
#import "xAppDelegate.h"
#import "XMLParser.h"
@synthesize array, dictionary, element;
- (XMLParser *) initXMLParser {
[super init];
appDelegate = (xAppDelegate *)[[UIApplication sharedApplication] delegate];
return self;
}
- (void)parserDidStartDocument:(NSXMLParser *)parser {
array = [[NSMutableArray alloc] init];
dictionary = [[NSMutableDictionary alloc] init];
}
- (void)parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict
{
ele = [elementName copy];
if ([elementName isEqualToString:@"CONTAINER"]) {
element = [[NSMutableString alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser
foundCharacters:(NSMutableString *)string
{
if ([ele isEqualToString:@"ELEMENTNAME"]) {
[element appendString:string];
}
}
- (void)parser:(NSXMLParser *)parser
didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"CONTAINER"]) {
[dictionary setObject:element forKey:@"ELEMENTNAME"];
[array addObject:[dictionary copy]];
}
}
- (void) dealloc {
[element release];
[dictionary release];
[array release];
}
나는이 작업을 수행 :
controller.h
@class XMLParser;
@interface controller : UIViewController {
XMLParser *aXMLParser;
}
@property (nonatomic, retain) XMLParser *aXMLParser;
controller.m
#import "XMLParser.h"
@synthesize aXMLParser;
- (void)viewDidLoad {
NSLog(@"test array: %@", aXMLParser.array);
NSLog(@"test dict: %@", aXMLParser.dictionary);
NSLog(@"test element: %@", aXMLParser.element);
}
내 배열의 값, 딕셔너리 또는 요소를 테스트 할 때 내 결과를 얻을 XMLParser.h 파일. 컨트롤러 파일에서 내 결과를 호출 할 수 없기 때문에 내가 뭘 잘못하고 있니? 저는 지금 당장 붙어있어서 도움이됩니다./
이것은 Objective-C입니다. – BobbyShaftoe
BobbyShaftoe를 알아 줘서 고마워. – FFXIII