UIViewController
ボタンが 1 つとラベルが 1 つのページがあります。プロジェクトにxmlパーサーを追加し、すべてが機能します(コンソールでテストします)。現在、XMLファイルをラベルに接続して、XMLファイルの1つの属性(テスト用)を取得したいと考えています。私の質問は、XML を自分のラベルに接続する方法です。これを実装するためのヒントを教えてください。
私はObjective-Cが初めてです
これが私のコードです:
xml ファイルをラベルに接続する方法を確認したいだけです
- (void)viewDidLoad
{
//appDelegate = (testAppDelegate *)[[UIApplication sharedApplication] delegate];
label.textColor = [UIColor greenColor];
// label.text = aBook.title; //it not working, I don't know what should I write to get one
// element of xml file to this label or first element of xml file
[super viewDidLoad];
}
ここに私のxmlファイルがあります
<?xml version="1.0" encoding="UTF-8"?><Books>
<Book id="1">
<title>
Circumference</title>
<author>Nicholas Nicastro</author>
<summary>Eratosthenes and the Ancient Quest to Measure the Globe.</summary>
</Book>
<Book id="2">
<title>Copernicus Secret</title>
<author>Jack Repcheck</author>
<summary>How the scientific revolution began</summary>
</Book>
<Book id="3">
<title>Angels and Demons</title>
<author>Dan Brown</author>
<summary>Robert Langdon is summoned to a Swiss research facility to analyze a cryptic symbol
seared into the chest of a murdered physicist.</summary>
</Book>
<Book id="4">
<title>Keep the Aspidistra Flying</title>
<author>George Orwell</author>
<summary>A poignant and ultimately hopeful look at class and society, Keep the Aspidistra
Flying pays tribute to the stubborn virtues of ordinary people who keep the aspidistra
flying.
</summary>
</Book>
必要な場合は、パーサー クラスを次に示します。
- (Presentation1NameXML *) initXMLParser {
appDelegate = (testAppDelegate *)[[UIApplication sharedApplication] delegate];
return self;
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict {
if([elementName isEqualToString:@"Books"]) {
//Initialize the array.
appDelegate.books = [[NSMutableArray alloc] init];
}
else if([elementName isEqualToString:@"Book"]) {
//Initialize the book.
aBook = [[Presentation1Name alloc] init];
//Extract the attribute here.
aBook.bookID = [[attributeDict objectForKey:@"id"] integerValue];
NSLog(@"Reading id value :%i", aBook.bookID);
}
NSLog(@"Processing Element: %@", elementName);
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if(!currentElementValue)
currentElementValue = [[NSMutableString alloc] initWithString:string];
else
[currentElementValue appendString:string];
NSLog(@"Processing Value: %@", currentElementValue);
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if([elementName isEqualToString:@"Books"])
return;
//There is nothing to do if we encounter the Books element here.
//If we encounter the Book element howevere, we want to add the book object to the array
// and release the object.
if([elementName isEqualToString:@"Book"]) {
[appDelegate.books addObject:aBook];
aBook = nil;
}
else
[aBook setValue:currentElementValue forKey:elementName];
currentElementValue = nil;
}
@end
編集:
私が使ったとき
NSLog(@"%@", aBook.title); I got NULL
編集
私が見たいくつかのサンプルでは、彼らもこのようなものを持っています
Book *aBook = [appDelegate.books objectAtIndex:indexPath.row];
彼らはtableViewでそれを使用しているのでしかし、私はテーブルを持っていません。