私はそれを解析する必要があるxmlファイルを持っています。私はそれのためのYouTubeのチュートリアルに従っています。私は、テーブルビューコントローラのタグから解析されたデータを表示していますが、私はそこにデータが表示されていないアプリケーションを実行すると、テーブルビューコントローラは空です。ファイルを解析するための私のコードは、この、Objective cでXMLファイルを解析する
#import "QuestionParser.h"
#import "Question.h"
@interface QuestionParser()
@property NSXMLParser *parser;
@property NSString *element;
@property NSString *currentxref;
@property NSString *currenttext;
@property NSString *currentprompt;
@property NSString *currentexplanation;
@property NSString *currenttext1;
-(id)initWithArray:(NSMutableArray *)questionArray{
self = [super init];
if (self) {
self.questionArray = questionArray;
}
return self;
}
-(void)parseFile{
NSURL *url= [[NSBundle mainBundle]URLForResource:@"test" withExtension:@"xml"];
self.parser = [[NSXMLParser alloc]initWithContentsOfURL:url];
self.parser.delegate=self;
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict{
self.element = elementName;
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if ([self.element isEqualToString:@"xref"]) {
self.currentxref = string;
}
else if ([self.element isEqualToString:@"text"]){
self.currenttext = string;
}
else if ([self.element isEqualToString:@"prompt"]){
self.currentprompt = string;
}
else if ([self.element isEqualToString:@"explanation"]){
self.currentexplanation = string;
}
else if ([self.element isEqualToString:@"text"]){
self.currenttext1 = string;
}
}
です- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"question"]) {
Question *ques= [[Question alloc]initWithName:_currentxref text:_currenttext prompt:_currentprompt explanation:_currentexplanation text1:_currenttext1];
[self.questionArray addObject:ques];
}
self.element = nil;
}
iは、データソースのデータをロードしていどのこれは、
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.questionArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
Question *ques=self.questionArray[indexPath.row];
cell.textLabel.text=ques.xref;
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@",ques.prompt];
return cell;
}
マイXMLファイルは、これは、この方法は、完全なXML persing後に実行される、
かは不明です。 XMLParsingは非同期です。それは終了しましたか?あなたのテーブルビューをリロードしますか? – Larme
これは実際にはxmlで私の初めてのことです、私自身はこれをどうやって得ることができません。 @Larme – siddle